2013-08-22 21 views
1
SFC.OrderFormModifiedMonitoringRecords 
    .SelectMany(q => q.TimeModify, w => w.DateModify) 
    .Distinct() 
    .OrderBy(t => t) 
    .SelectMany(t => new { RowID = t.rowID, OFnum = t.OFNo }); 

這是錯誤我錯過了什麼,或者它是完全編碼的錯誤方式?在這之後,我會在Foreach方法中使用這個方法來收集多個數據而不需要重複。Linq在C#中使用Distinct()Lambda表達式

+3

什麼是錯誤?錯誤在哪裏? –

+0

它在這個聲明{SFC.OrderFormModifiedMonitoringRecords.SelectMany(q => q.TimeModify,w => w.DateModify)}它說試着指定參數的類型明確我指定它的權利?還是我錯過了什麼? ( –

+0

)你得到的錯誤是暗示編譯器無法弄清楚SelectMany的返回類型是什麼,因此它要求你明確指出,即使用Selectmany ()。這樣做並不能解決問題,但你會得到一個更清晰的錯誤信息,如果你希望我們幫助你,你必須告訴我們更多關於類型的信息。什麼是TimeModify和DateModify的類型,以及你希望數據看起來像SelectMany語句之後的樣子不同的)? – Tormod

回答

4

您傳遞給SelectMany的代理必須返回IEnumerable,並且用於將多個集合合併爲一個。所以,是的,這裏肯定是錯的。我想你已經將它與Select混淆了,它只是將一個集合映射到另一個集合。

不知道你的目標是什麼,這是很難確切地知道如何解決它,但我猜你想是這樣的:

在查詢語法
SFC.OrderFormModifiedMonitoringRecords 
    .OrderBy(t => t.DateModify) 
    .ThenBy(t => t.TimeModify) 
    .Select(t => new { RowID = t.rowID, OFnum = t.OFNo }) 
    .Distinct(); 

或者:

(from t in SFC.OrderFormModifiedMonitoringRecords 
orderby t.DateModify, t.TimeModify 
select new { RowID = t.rowID, OFnum = t.OFNo }) 
.Distinct(); 

這將按DateModify然後按TimeModify排序記錄,選擇兩個屬性,rowIDOFNo,並返回唯一不同的值對。

+0

我認爲.OrderBy(...)應該是最後一個,在.Distinct()之前。 –

+0

@maremp然後你將無法排序結果,因爲'Select'不包含相關 –

+0

當然,我第一次誤解了查詢。 –