狠狠色丁香婷婷综合尤物/久久精品综合一区二区三区/中国有色金属学报/国产日韩欧美在线观看 - 国产一区二区三区四区五区tv

LOGO OA教程 ERP教程 模切知識(shí)交流 PMS教程 CRM教程 開(kāi)發(fā)文檔 其他文檔  
 
網(wǎng)站管理員

在 C# 中使用 except 和 intersect 比較集合

admin
2024年12月2日 9:45 本文熱度 877

前言

.NET 提供了集合類(lèi)型,它存儲(chǔ)了一組數(shù)據(jù)。我們有時(shí)會(huì)在兩個(gè)集合中進(jìn)行比較,匹配或不不匹配的元素。本文探討ExceptIntersect兩個(gè)用來(lái)比較兩個(gè)集合中的唯一元素和找出不匹配的元素?cái)U(kuò)展方法。

except

except是在二個(gè)集合比較中,找出在第一集合中有而第二個(gè)集合中沒(méi)有的元素集,這種操作我們可稱(chēng)求差集

例如:我們有兩個(gè)用戶(hù)實(shí)體列表集合,當(dāng)需要找出一個(gè)列表中可用,但在第二個(gè)列表中不可用的元素時(shí)。則可以使用except方法來(lái)實(shí)現(xiàn)。下面為示例代碼:

定義用戶(hù)實(shí)體類(lèi):

public class User{ public int Id { get; set; } public string Name { get; set; } public string Email { get; set; } public string Mobile { get; set; } public string Password { get; set; }}

定義二個(gè)用戶(hù)實(shí)體列表:

// 第一個(gè)列表集合List<User> szUsers = new(){    new User { Id = 1001, Name = "李華", Mobile = "13698765432", Email = "lihua@qq.com",Password="lh123456" },    new User { Id = 1002, Name = "小明", Mobile = "13677765432", Email = "xiaoming@qq.com",Password="xm123456" },    new User { Id = 1003, Name = "小米", Mobile = "123588887654", Email = "xiaomi@qq.com",Password="xm123456" }};// 第二個(gè)列表集合List<User> gzUsers = new(){    new User { Id=1004, Name="李華", Mobile="13698765432", Email="lihua@qq.com",Password="lh123456"},    new User { Id=1005, Name="小明", Mobile="13677765432", Email="xiaoming@qq.com",Password="xm123456" },    new User { Id=1006, Name="小強(qiáng)", Mobile="13499987654", Email="xiaoqiang@qq.com",Password="xq123456" }};

使用except 實(shí)現(xiàn)比較

using System.Text.Encodings.Web;using System.Text.Json;namespace Fountain.WinConsole.ExampleDemo{    internal class Program    {        static void Main(string[] args)        {            // 配置選項(xiàng)            var options = new JsonSerializerOptions            {                // 允許字符通過(guò)而不進(jìn)行轉(zhuǎn)義方面更加寬松                Encoder = JavaScriptEncoder.UnsafeRelaxedJsonEscaping            };            // 比較每個(gè)元素,直接使用整個(gè)集合            List<User> diffnCollection = szUsers.Except(gzUsers).ToList();            Console.WriteLine($"不匹配集合:\r\n{JsonSerializer.Serialize(diffnCollection, options)}");            Console.WriteLine();            // 根據(jù)一些選定的元素檢查未匹配的元素            var unMatchedElements = szUsers.Select(s => new { s.Mobile, s.Email }).Except(gzUsers.Select(s => new { s.Mobile, s.Email })).ToList();            Console.WriteLine($"不匹配元素:\r\n{JsonSerializer.Serialize(unMatchedElements, options)} ");            Console.WriteLine();            List<User> mismatchedCollection = szUsers.Where(x => unMatchedElements.Any(a => a.Email == x.Email) && unMatchedElements.Any(a => a.Mobile == x.Mobile)).ToList();            Console.WriteLine($"不匹配集合:\r\n{JsonSerializer.Serialize(mismatchedCollection, options)}");            Console.ReadKey();        }    }}

intersect

intersect是二個(gè)集合比較中,找出在第一集合與第二個(gè)集合中共有的元素集,這種操作我們可稱(chēng)求交集

例如:我們有兩個(gè)用戶(hù)實(shí)體列表集合,當(dāng)需要找出二個(gè)列表中相同元素時(shí)。則可以使用intersect方法來(lái)實(shí)現(xiàn)。下面為示例代碼:

using System.Text.Encodings.Web;using System.Text.Json;namespace Fountain.WinConsole.ExampleDemo{    internal class Program    { static void Main(string[] args)        { // 配置選項(xiàng)            var options = new JsonSerializerOptions            {                // 允許字符通過(guò)而不進(jìn)行轉(zhuǎn)義方面更加寬松                Encoder = JavaScriptEncoder.UnsafeRelaxedJsonEscaping            };            // 使用 intersect 匹配比較            var matchedElesments = szUsers.Select(s => new { s.Mobile, s.Email }).Intersect(gzUsers.Select(s => new { s.Mobile, s.Email })).ToList();            Console.WriteLine($"匹配元素: \r\n{JsonSerializer.Serialize(matchedElements, options)}");            Console.WriteLine();            //             List<User> matchedCollection = szUsers.Where(x => matchedElements.Any(a => a.Email == x.Email) && matchedElements.Any(a => a.Mobile == x.Mobile)).ToList();            Console.WriteLine($"匹配集合: \r\n{JsonSerializer.Serialize(matchedCollection, options)}");            Console.ReadKey();        }    }}

下面再使用一個(gè)簡(jiǎn)單示例,演示了如何使用 Intersect 方法來(lái)獲取兩個(gè)集合的交集:

using System;using System.Collections.Generic;namespace Fountain.WinConsole.ExampleDemo{ class Program    {        static void Main()        {            // 創(chuàng)建兩個(gè)集合 List<int> intList = new List<int> { 1, 2, 3, 4, 5 }; List<int> list = new List<int> { 4, 5, 6, 7, 8 };            // 使用 Intersect 方法獲取交集 List<int> intersection = intList.Intersect(list).ToList();            // 輸出交集            Console.WriteLine("匹配集合: " + string.Join(", ", intersection));        }    }}

小結(jié)

以上,通過(guò)使用except方法和intersect方法實(shí)現(xiàn)兩個(gè)集合比較示例,了解其使用方法。它們?cè)趯?duì)集合進(jìn)行比較時(shí),也是可以使用的方式。


該文章在 2024/12/2 9:45:01 編輯過(guò)
關(guān)鍵字查詢(xún)
相關(guān)文章
正在查詢(xún)...
點(diǎn)晴ERP是一款針對(duì)中小制造業(yè)的專(zhuān)業(yè)生產(chǎn)管理軟件系統(tǒng),系統(tǒng)成熟度和易用性得到了國(guó)內(nèi)大量中小企業(yè)的青睞。
點(diǎn)晴PMS碼頭管理系統(tǒng)主要針對(duì)港口碼頭集裝箱與散貨日常運(yùn)作、調(diào)度、堆場(chǎng)、車(chē)隊(duì)、財(cái)務(wù)費(fèi)用、相關(guān)報(bào)表等業(yè)務(wù)管理,結(jié)合碼頭的業(yè)務(wù)特點(diǎn),圍繞調(diào)度、堆場(chǎng)作業(yè)而開(kāi)發(fā)的。集技術(shù)的先進(jìn)性、管理的有效性于一體,是物流碼頭及其他港口類(lèi)企業(yè)的高效ERP管理信息系統(tǒng)。
點(diǎn)晴WMS倉(cāng)儲(chǔ)管理系統(tǒng)提供了貨物產(chǎn)品管理,銷(xiāo)售管理,采購(gòu)管理,倉(cāng)儲(chǔ)管理,倉(cāng)庫(kù)管理,保質(zhì)期管理,貨位管理,庫(kù)位管理,生產(chǎn)管理,WMS管理系統(tǒng),標(biāo)簽打印,條形碼,二維碼管理,批號(hào)管理軟件。
點(diǎn)晴免費(fèi)OA是一款軟件和通用服務(wù)都免費(fèi),不限功能、不限時(shí)間、不限用戶(hù)的免費(fèi)OA協(xié)同辦公管理系統(tǒng)。
Copyright 2010-2025 ClickSun All Rights Reserved