2016-08-03 44 views
1

我有SortedList<DateTime, object>。它每次都是一個KeyValuePair<>這是一個結構。所以,我怎麼能知道何時方法FirstOrDefault沒有發現任何在此列表中?(上課返回null但對於一個struct?)如何理解FirstOrDefault何時在排序列表中找不到任何內容?

爲什麼我只是不能比較default(KeyValuePair<Key, Value>)FirstOrDefault結果呢?

private SortedList<DateTime, GatewayPassage> gwPassages = 
    new SortedList<DateTime, GatewayPassage>(new DescDateTimeComparer()); 

var lastGwPassages = gwPassages.FirstOrDefault(x => x.Value.Tag == tag && 
                x.Value.Gateway == gateway); 

我要像「若一無所獲」

if(lastGwPassages == %some kind of default value%) 
+0

爲什麼你想,如果你想控制結果發現使用FirstOfDefault? – ams4fy

+1

我認爲你應該與'默認(KeyValuePair )'而不是 – Petaflop

+0

比較你可以比較'.Key ==默認(DateTime)' –

回答

1

投的項目爲KeyValuePair<DateTime,object>?,然後你就可以檢查它是否等於空。

SortedList<DateTime, object> collection = new SortedList<DateTime, object>() 
{ 
    { new DateTime(2016,1,2), new object() }, 
    { new DateTime(2016,1,1), new object() }, 
    { new DateTime(2016,1,3), new object() }, 
}; 

var firstOrDefault = collection.Cast<KeyValuePair<DateTime,object>?>().FirstOrDefault(); // date of 1/1/2016 
var checkIfDefault = firstOrDefault == null; // false 

collection.Clear(); 

firstOrDefault = collection.Cast<KeyValuePair<DateTime, object>?>().FirstOrDefault(); // null 
checkIfDefault = firstOrDefault == null; // true 

在您的示例代碼:

var lastGwPassages = gwPassages.Cast<KeyValuePair<DateTime,GatewayPassage>?>() 
           .FirstOrDefault(x => x.Value.Tag == tag && 
                x.Value.Gateway == gateway); 

現在你可以做lastGwPassages == null

相關問題