亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

簡化迭代到 linq 查詢

簡化迭代到 linq 查詢

C#
大話西游666 2023-09-16 17:03:22
我目前正在開發 .NET 4.7.1 應用程序。給定一個 for 循環來比較 2 個列表并檢查是否有任何 Id 已更改。如果列表 1 中的任何 Id 與列表 2 中的任何 Id 不同,我需要返回 null,否則返回列表 2。我目前通過簡單的迭代解決了這個問題。盡管如此,我想知道是否可以使用 LINQ 語句更輕松地解決這個問題。var list1 = new List<string>{  "A",  "B",  "C"};var list2 = new List<string>{  "A",  "C",  "B"};private List<string> Compare(){ if (list1 != null) {    for (int i = 0; i < list1.Count; i++)    {        if (list1[i] != list2[i])        {            return list2;        }    }    return null; } return list2;}您知道如何解決這個問題而不是使用 for 循環,而是使用 LINQ 語句嗎?謝謝!
查看完整描述

2 回答

?
楊魅力

TA貢獻1811條經驗 獲得超6個贊

這是 For 循環的一種 linq 替代方案


   private List<string> Compare()

    {

        if (list1 == null) return list2;

        if (list1.Where((x, i) => x != list2[i]).Any())

        {

            return list2;

        }


        return null;

    }



查看完整回答
反對 回復 2023-09-16
?
一只名叫tom的貓

TA貢獻1906條經驗 獲得超3個贊

您可以使用Zip將項目分組在一起來比較它們,然后All確保它們相同:


private List<string> Compare()

{


 if (list1 == null) return list2;

 if (list1.Count != list2.Count) return null;


 bool allSame = list1.Zip(list2, (first, second) => (first, second))

                     .All(pair => pair.first == pair.second);



 return allSame ? list2 : null;

}

注意:該Zip函數用于將兩個項目放入一個元組中(第一個,第二個)。


您還可以使用SequenceEqual


private List<string> Compare()

{


 if (list1 == null) return list2;


 bool allSame = list1.SequenceEqual(list2);      

 return allSame ? list2 : null;

}


查看完整回答
反對 回復 2023-09-16
  • 2 回答
  • 0 關注
  • 136 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號