我有一個對象被稱爲MyConnection屬性的來源是類型列表我有麻煩編寫linq代碼來查找列表中的所有MyConnections連接有一個源「 」。來自屬性集合的過濾器集合Linq
我試過,但它似乎沒有運行..
MyConnection initialActivity = currentActivities.ToList().Where(x => x.Sources.Contains(String.Empty));
我有一個對象被稱爲MyConnection屬性的來源是類型列表我有麻煩編寫linq代碼來查找列表中的所有MyConnections連接有一個源「 」。來自屬性集合的過濾器集合Linq
我試過,但它似乎沒有運行..
MyConnection initialActivity = currentActivities.ToList().Where(x => x.Sources.Contains(String.Empty));
.Where()
返回匹配元素的序列。
您不能將其分配給類型爲MyConnection
的變量。
相反,您可以調用像.Last()
這樣的方法來獲取單個元素。
如果你只是想獲得一個活動認爲具有「源」,而不是所有的人都,使用
MyConnection initialActivity = currentActivities.ToList()
.FirstOrDefault(x => x.Sources.Contains(String.Empty));
,這將給你null
如果沒有這樣的活動,如果有一個或多個活動,則選擇第一個活動。
或者到FirstOrDefault
,使用:
First
給你的第一,但拋出一個異常,如果有沒有Single
給你一個單一的比賽,並拋出一個異常的有0或> 1匹配SingleOrDefault
給你一個單獨的比賽或不匹配,並且如果有> 1個匹配,則拋出和異常。如果你想個個,返回類型將是一個IEnumerable<MyConnection>
,沒有一個:
IEnumerable<MyConnection> initialActivities = = currentActivities.ToList()
.Where(x => x.Sources.Contains(String.Empty));
然後,您可以foreach
在此,或致電其ToList
或ToArray
到得到一個列表或一個數組。
N.B.你可能不需要需要在的中間在這裏調用.ToList()
。
Where
返回IEnumerable<MyConnection>
不是一個MyConnection
。所以你可以枚舉所有在foreach
或採取一個f.e.與First
。
IEnumerable<MyConnection> allWithEmptySource = currentActivities
.Where(con => con.Sources.Any(s => string.IsNullOrEmpty(s)));
if(allWithEmptySource.Any())
{
MyConnection first = allWithEmptySource.First();
}
打我的IEnumerable –
'Any'是不是真正的解決方案在這裏,假設源真的是' 「」''不null'; 'Contains'最好用於平等檢查,因爲它可以在'ICollection'上快捷。 – Rawling
@Rawling:爲什麼'Any'不正確?他希望「在列表中找到所有'MyConnections',其中一個連接具有'String.Empty'的源。」因此,連接中可能有多個來源。但如果其中任何一個都是空的,他希望得到'MyConnection'。 –