linq 如果列表中对象的ID与ID列表匹配,则将属性设置为true

n1bvdmb6  于 12个月前  发布在  其他
关注(0)|答案(1)|浏览(150)

我试图用预先选择的选项填充一个列表。我用一个SelectListItem列表填充这个列表,这些列表允许你将它们的“Selected”属性设置为true。
但是,如果选择列表项的值(选项的id)与使用linq选择的选项的id列表匹配,我想将属性设置为true。
我相信这会得到每个与ID列表相匹配的对象,但是我不确定我现在如何选择每个项目并将其“Selected”属性设置为true。我知道我可以将其设置为列表,然后循环列表,将值设置为true,然后返回该列表,但是如果可能的话,我更喜欢在一行中完成。

public List<SelectListItem> StorageFormats { get; set; }

StorageFormats = await _storageFormat.GetStorageFormatSelectList();

StorageFormats = StorageFormats
    .Where(x => _availabilityFormatMap
        .GetAvalabilityStorageFormat(id)
        .Select(y => y.ID)
        .ToString()
        .Contains(x.Value))
    .ToList();

字符串

63lcw9qa

63lcw9qa1#

我认为有两种方法可以做到这一点。
1.通过列表。ForEach:-

StorageFormats.ForEach(x => x.Selected = true); 
// change it according to your class structure.

字符串
1.通过扩展:

public static class ExtensionMethods
{
    public static void SetSelectedForEach(this IEnumerable<StorageFormat> source, bool value)
    {
        foreach (var item in source)
        {
            item.Selected = value;
        }
    }
}

// change according to your namespace and class structures.


然后像这样使用

StorageFormats.SetSelectedForEach(true);

相关问题