我对 linq 和 c# 相当陌生,如果我很愚蠢,我很抱歉。我有一个查询,它根据传入的一些变量返回产品信息列表、这些产品的价格和这些产品所在的类别:
var y = (from pl in dc.Products
join pr in dc.Prices
on pl.ID equals pr.ProductID
join c in dc.Categories
on pl.ID equals c.ProductID
where pr.Currency == Currency
&& (string.IsNullOrEmpty(Cat1) || c.Cat1 == Cat1)
&& (string.IsNullOrEmpty(Cat2) || c.Cat2 == Cat2)
&& (string.IsNullOrEmpty(Cat3) || c.Cat3 == Cat3)
&& (string.IsNullOrEmpty(Cat4) || c.Cat4 == Cat4)
&& (string.IsNullOrEmpty(Cat5) || c.Cat5 == Cat5)
select new {pl,pr,c});
就目前而言,这可以正常工作,但是例如说 y 行的 ID = 1 和 Cat1 = Foo,另一行的 ID = 1 和 Cat1 = Bar,那么显然上面的查询会将两者都带回来。有没有办法修改这个查询,以便我可以为每个 ID 带回一行。
我已经用谷歌搜索了大约 2 个小时,并尝试了 group bys、.Distinct 与 IEqualityComparer 以及我找到的其他方法,但没有成功。我的理解还不够好,如果有任何帮助,我将不胜感激!