2015-02-11 29 views
0

我想知道,如果它可以修復這一說法MVC剃刀LINQ聲明相同的ID。它包括firstordefault和where子句

我想從它們中的一個獲得來自每個具有相同TotalScore值的每個ID的5個對象的TotalScore值。

使用FirstOrDefault可以給我集合中的第一個值,不管競爭對手的ID是什麼。

所以我的問題是,我在這裏錯過什麼讓這個聲明正常工作。

+0

這看起來像它按ID進行過濾。然後,您從第一個匹配的ID中獲取TotalScore值。從描述中不完全清楚它應該做什麼。一些示例輸入和所需的輸出將有所幫助。你說它基本上忽略了Where子句? – 2015-02-11 22:43:11

+0

我不明白 - >'我想從每個對象的TotalScore值中選擇一個,每個對象的TotalScore對於每個ID都有相同的值。' – itsme86 2015-02-11 22:44:13

+0

所以......你想從50個對象的集合到10個對象的集合,假設有10個具有相同ID的5個對象集合? TotalScore在每組5個不同或相同?請顯示一個示例數據集以幫助我們理解。 – TLS 2015-02-11 22:45:42

回答

0

如果我正確地理解了這個問題,我想你想要的是Distinct而不是WhereSelect而不是FirstOrDefault最後。

@Model.OrdinalDataList.Distinct().Select(x => x.TotalScore) 

注意:未經測試!

如果不工作,因爲有中的對象更多的屬性,那麼你可能需要做一個SelectDistinct之前只獲取IDTotalScore性能的投影,然後做最後Select得到公正TotalScore

0

我很困惑,爲什麼你有相同的數據在列表中的5倍,但這應該得到的第一個項目的TotalScore與匹配對手ID列表:

var score = @Model.OrdinalDataList.FirstOrDefault(s => s.CompetitorId == c.Id).TotalScore;