public class Item
{
public int Id {get; set;}
public bool Selected {get; set;}
}
List<Item> itemList = new List<Item>(){ /* fill with items */ };
我需要创建一个项目列表,满足以下条件。从
itemList
中,我需要按Id
对项目进行分组,然后从每个组中选择一个项目。所选项目必须是Selected == true
的项目。如果组中没有选择任何项目,则可以选择任意项目,但必须选择一个。基于这个问题: How to get distinct instance from a list by Lambda or LINQ 我能够提出以下代码,似乎可以达到上述要求:
var distinctList = itemList.GroupBy(x => x.Id,
(key, group) => group.Any(x => x.Selected) ?
group.First(x => x.Selected) : group.First());
是否有更高效或更简单的方法来实现这一点?我尝试了FirstOrDefault()
但似乎不能满足我的需求。我关心上述代码中调用Any()
的效率问题。