其中,列表中对象的 id 与 id 列表匹配,将属性设置为 true

Where id of object in list matches list of id set property to true

提问人:beeeeeeeeeen 提问时间:11/18/2023 最后编辑:Dmitry Bychenkobeeeeeeeeeen 更新时间:11/18/2023 访问量:42

问:

我正在尝试使用预选选项填充下拉列表。 我用 SelectListItems 列表填充此列表,允许您将其“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();


C# LINQ

评论


答:

0赞 Priyansh Yadav 11/18/2023 #1

我相信有两种方法可以做到这一点。

  1. 通过List.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);