我有SortedList<DateTime, object>
。每次都是KeyValuePair<>
,这是一个结构。那么,我怎么能理解方法FirstOrDefault
何时在此列表中找不到任何内容?(对于类返回null
但是对于struct
?)
为什么我无法比较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);
我希望条件像&#34;如果没有找到&#34;
if(lastGwPassages == %some kind of default value%)
答案 0 :(得分:2)
将项目转换为KeyValuePair<DateTime,object>?
,然后您就可以检查它是否等于null。
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