1
我對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,用IEqualityComparer和其他我發現但沒有成功的方法。我的理解不夠好,我會很感激任何幫助!
謝謝@peer我會試試看看我如何得到 – John
我必須將ContainsKey()更改爲Contains(),但除此之外它完美地工作,謝謝。 – John