C# 使用Linq过滤分组产品

C# 使用Linq过滤分组产品,c#,linq,group-by,C#,Linq,Group By,我有一个productInfo类,它具有ProductId和Locale属性,并尝试使用当前localeid显示产品,同时也显示具有相同id的产品 这意味着,在按产品id进行分组后,一旦有一个产品的区域设置等于当前区域设置,我们将使用其各自的区域设置显示该组 以下是seudo代码/示例: public class productInfo { public int ProductId {get;set;} public int LocaleId {get;set;} } List<

我有一个productInfo类,它具有ProductId和Locale属性,并尝试使用当前localeid显示产品,同时也显示具有相同id的产品

这意味着,在按产品id进行分组后,一旦有一个产品的区域设置等于当前区域设置,我们将使用其各自的区域设置显示该组

以下是seudo代码/示例:

 public class productInfo
{
 public int ProductId {get;set;}
 public int LocaleId  {get;set;}
}


List<productInfo> listProduct = List<productInfo>();
listProduct.Add(new productInfo{ ProductId = 100, LocaleId = 1 });
listProduct.Add(new productInfo{ ProductId = 100, LocaleId = 2 });
listProduct.Add(new productInfo{ ProductId = 100, LocaleId = 3 });
listProduct.Add(new productInfo{ ProductId = 200, LocaleId = 4 });
listProduct.Add(new productInfo{ ProductId = 300, LocaleId = 1 });
listProduct.Add(new productInfo{ ProductId = 300, LocaleId = 5 });
listProduct.Add(new productInfo{ ProductId = 400, LocaleId = 6 });
以下项目将从列表中删除:

productInfo { ProductId = 200, LocaleId = 4 }
productInfo { ProductId = 400, LocaleId = 6 }
如何使用Linq实现这一点

productList.GroupBy(p => p.ProductId)
           .Where(g => g.Any(p => p.LocaleId == 1))
           .SelectMany(g => g)
           .ToList();
将1替换为当前区域设置

productList.GroupBy(p => p.ProductId)
           .Where(g => g.Any(p => p.LocaleId == 1))
           .SelectMany(g => g)
           .ToList();