日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程语言 > C# >内容正文

C#

C# Linq获取两个List或数组的差集交集

發(fā)布時(shí)間:2024/9/5 C# 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 C# Linq获取两个List或数组的差集交集 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
List<int>?list1?=?new?List<int>();
list1.Add(1);
list1.Add(2);
list1.Add(3);
List<int>?list2?=?new?List<int>();
list2.Add(3);
list2.Add(4);
list2.Add(5);
//得到的結(jié)果是4,5?即減去了相同的元素。
List<int>?list3?=?list2.Except(list1).ToList();
foreach?(int?i?in?list3)
{
????MessageBox.Show(i.ToString());
} 合并兩個(gè)數(shù)組,并去掉重復(fù)元素,然后排序(C#)
List<int>?numbers1?=?new?List<int>()?{?5,?4,?1,?3,?9,?8,?6,?7,?12,?10?};
List<int>?numbers2?=?new?List<int>()?{?15,?14,?11,?13,?19,?18,?16,?17,?12,?10?};
var?newQuerty?=?numbers1.Concat(
from?n?in?numbers2
where?!numbers1.Contains(n)
select?n
).OrderBy(n=>n); 合并兩個(gè)數(shù)組,并去除合并后的重復(fù)數(shù)據(jù), 并排序

? ? ? ? ? ? int[] A={1,2,2,3,4,5,6,6,6};
??????????? int[] B={2,2,2,3,7,8,9,5};

??????????? List<int> list = new List<int>(A);
??????????? list.AddRange(B);

??????????? list.Sort();

??????????? //去除重復(fù)項(xiàng)
??????????? foreach (int i in list.Distinct<int>())
??????????? {
??????????????? Console.WriteLine(i);
??????????? }

C# 取兩個(gè)數(shù)組的相同元素

以往我們都是肯定絞盡腦汁,肯定什么循環(huán),元素大小,什么因素都考慮進(jìn)去。但是現(xiàn)在采用Linq可以很好的解決這個(gè)問題。找出兩個(gè)或多個(gè)數(shù)組的相同項(xiàng)。

代碼相當(dāng)簡(jiǎn)單:

usingSystem;

usingSystem.Collections.Generic;

usingSystem.Linq;

usingSystem.Text;

namespaceTest4_03

{

???classProgram

????{

???????staticvoidMain(string[] args)

????????{

???????????string[] names = {"Adams","Arthur","Buchanan","Tsbuchis","ShCian","FuchsiaLinda","DecheChen","Lotheer","FindLanciCade","SorchLand","JiangZheng","MisiiLoda","Gtod","Dfac","Lama","BakCades","Losangle","ZheWQ","GehengDahaLothi","ToryLandey","DakaLothy","BthLanda","MenNorth","Fith","FoxMain","DontM","Saobba","Del","Sala","Ghero","BhthLaPhda"};

???????????IEnumerable<string> skip = names.Skip(10);

???????????IEnumerable<string> take = names.Take(11);

???????????//取出兩個(gè)序列中交集部分,按理論應(yīng)該輸出JiangZheng

???????????IEnumerable<string> intersect = skip.Intersect(take);

???????????foreach(varsinintersect)

????????????{

???????????????Console.WriteLine(s);

????????????}

???????????Console.ReadKey();

????????}

????}

}

?

C# 獲取兩個(gè)數(shù)組集合的差集,交集

今天在做一個(gè)樹形選擇節(jié)點(diǎn)時(shí),遇到一個(gè)問題,屬性節(jié)點(diǎn)是記錄了相關(guān)的ID值,第一次呢全部對(duì)這些ID進(jìn)行處理,但是接下來再次選擇就要分情況了,原先選擇的ID如果不在新選擇的集合中那么剔除掉,否則,原先ID不傳入函數(shù)處理,新ID傳入函數(shù)處理:

比如原來①選擇的ID是:1,2,3,4??????????????? 下次:1,2,3,4,5,?? 那么這時(shí)候5要處理,1,2,3,4維持原樣。

????????????? ②選擇ID是:1,3??????????????????????????下次: 3,4,5?????????? 那么這時(shí)候4,5 要處理,3 維持原樣。1剔除。

??????????? ??③選擇ID是:1,2,3,4,5??????????????????下次:3,4,5???????????? 那么這時(shí)候3,4,5都維持原樣,1,2剔除。

????????????? ④選擇ID是:1,2???????????????????????????下次:3,4,5???????????? 那么這時(shí)候3,4,5處理,1,2剔除。

?

簡(jiǎn)化一下數(shù)學(xué)模型:

大家發(fā)現(xiàn)沒其實(shí)這就是一個(gè)數(shù)學(xué)的概念,集合的差集,那么我們?cè)趺刺幚砟?#xff1f; 假設(shè)前次選擇的集合為A,后次選擇為B

得到要處理的很簡(jiǎn)單:B-A (B與A的差集)就是要處理的集合元素,為什么呢?根據(jù)概念可知哈!

那么得到不做處理的怎么辦呢? 不要處理的必然是B的子集,那么怎么得到呢?

出來啦既是:B-(B-A)?? ?這是為什么呢? B-A? 就是要處理的,而維持原樣的就是當(dāng)然就是:B-(B-A),

那么剔除的集合呢? A-(B-(B-A))?

?

如何用C#表示呢,我這里就不用什么循環(huán)之類的了,我用的是NET3.5 那就好辦了,用Linq處理:

俺這里特殊點(diǎn),右鍵得到的樹形集合(lstSource)包含了其他信息,先獲取ID集合再說:

?var m_ilAllSelect = lstSource.Select(r => r.ID).AsEnumerable();//新選擇的列表

///下面開始處理了

List<int> m_ilNewSelect = m_ilAllSelect.ToList();//新選擇列表
List<int> m_ilExcept = m_ilNewSelect.Except(m_mcuids).ToList(); //兩者的不同之處
List<int> m_iExceptAfterAndNew = m_ilNewSelect.Except(m_ilExcept).ToList();//新選擇列表與差集比較,則是新選擇中的舊的

?

為了簡(jiǎn)化給大家,這里的A代表舊集合,B代表新集合,這里的集合都是List<int>泛型列表。

那么要處理的就是 B.Except(A), 維持原樣的:B(?B.Except(A)), 剔除的:A.Except(B(?B.Except(A))),

不要問我這個(gè)Except方法啥意思?看MSDN吧,google也行啦!

當(dāng)然我實(shí)際的源碼比這更細(xì)致點(diǎn),至此解決集合的差集的知識(shí)點(diǎn)就這些了!

轉(zhuǎn)載于:https://www.cnblogs.com/xiaofengfeng/p/3449985.html

總結(jié)

以上是生活随笔為你收集整理的C# Linq获取两个List或数组的差集交集的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。