[英]Get list items by checking priority of another list using linq
我需要实现一些东西,
我有一个具有不同优先级的项目列表,我需要根据这些优先级选择项目。 为此,我还有另一个优先事项清单。 如果优先级“一”不匹配,则应检查第二优先级,依此类推。 这可以通过一个简单的 foreach 循环进行检查,并使用 .Any() 函数进行检查。 但我想知道这可以通过单个 LINQ 查询来完成。
enum Brand
{
Nike,
Adidas,
Levis
}
class Info
{
public Brand Brand { get; set; }
public int Status{ get; set; }
public int Group{ get; set; }
}
var list = new Info[]
{
new Info{Brand = Brand.Nike, Status = 0, Group = "C"},
new Info{Brand = Brand.Adidas, Status = 0, Group = "D"},
new Info{Brand = Brand.Nike, Status = 4, Group = "A"},
new Info{Brand = Brand.Levis, Status = 0, Group = "B"},
new Info{Brand = Brand.Adidas, Status = 5, Group = "B"}
};
List<string> groupPririties = new List<string>() { "B", "D", "A", "E" };
根据这个物品清单和优先清单,我应该只得到Levis和Addidas。 但是如果这两个不在列表中,它应该返回阿迪达斯项目等等。 如果我的列表中没有任何优先匹配的项目,它应该返回 null。
我可以仅使用 linq 查询来实现吗?
但我想知道这可以通过单个 LINQ 查询来完成
var priorityItems = list
.GroupBy(x => x.Group)
.Where(grp => groupPririties.Contains(grp.Key))
.OrderBy(grp => groupPririties.IndexOf(grp.Key))
.FirstOrDefault();
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.