繁体   English   中英

通过使用 linq 检查另一个列表的优先级来获取列表项

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM