[英]Distinct the collection in Linq C#
我有收藏
在集合中,列名ma_position_value不應包含相同的值
例如
如果集合具有5條記錄,則列ma_position_value不應包含所有5條記錄中的相同值...但是,對於集合Atleast中的2或3或4條記錄,它可以包含相同值,應更改一個列值。
所以主要的意圖是所有5條記錄都不應該包含相同的值,任何一條都應該獲得不同的值,所以如果所有5條記錄都相同,我試圖拋出一條消息
所以我只寫了一個布爾值將它退還給我們
bool lblMa = false;
lblMa = ibusCalcWiz.iclbMssPaServiceSummary
.Where(lbusMssPaServiceSummary => lbusMssPaServiceSummary.icdoSummary.ma_position_value.IsNotNullOrEmpty()).Distinct().Count() > 1;
但是它總是返回true。
只需選擇不同的ma_position_value
屬性值:
bool allSame = ibusCalcWiz.iclbMssPaServiceSummary
.Select(i => i.ma_position_value)
.Distinct()
.Count() == 1;
提示:不要在lambda表達式中使用長變量名。 有一個經驗法則-變量用法的范圍越大,應使用更大的名稱。 如果范圍很小(lambda表達式),則名稱應該很小(單個字母就足夠了)。
您可以獲得第一個,並檢查它們是否相等:
// Only works if the collection is non-empty!
string first_ma_position_value = ibusCalcWiz.iclbMssPaServiceSummary.First().ma_position_value;
bool allTheSame = ibusCalcWiz.iclbMssPaServiceSummary
.All(lbusMssPaServiceSummary.icdoSummary.ma_position_value == first_ma_position_value);
或者,您可以按照原先的意圖進行區分,但要在列的值上而不是對象上
bool allTheSame = ibusCalcWiz.iclbMssPaServiceSummary
.Select(lbusMssPaServiceSummary => lbusMssPaServiceSummary.icdoSummary.ma_position_value)
.Distinct()
.Count() == 1;
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.