簡體   English   中英

在Linq C#中區分集合

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM