【.net core】使用 LINQ 在一个列表中查找并累加另一个列表中满足条件的数据的某个字段

文章展示了如何使用C#的LINQ查询从一个列表中查找另一个列表中满足特定条件的数据,并对找到的数据的特定字段进行累加求和。示例代码创建了两个Item列表,然后通过Any和Where方法查找Id匹配的项,并用Sum方法计算Id的总和。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1、通过一个列表查找另一个列表中满足条件的所有数据

可以使用LINQ查询来实现通过一个列表查找另一个列表中满足条件的所有数据。以下是一个示例代码,假设你要查找另一个列表(List2)中,某个字段等于第一个列表(List1)中的某个特定值:

using System;
using System.Collections.Generic;
using System.Linq;

class Program
{
    static void Main()
    {
        // 创建第一个列表
        List<Item> list1 = new List<Item>
        {
            new Item { Id = 1, Name = "Item 1" },
            new Item { Id = 2, Name = "Item 2" },
            new Item { Id = 3, Name = "Item 3" }
        };

        // 创建第二个列表
        List<Item> list2 = new List<Item>
        {
            new Item { Id = 4, Name = "Item 4" },
            new Item { Id = 2, Name = "Item 2" },
            new Item { Id = 5, Name = "Item 5" }
        };

        // 指定需要查找的值
        int searchId = 2;

        // 使用LINQ查询来找出满足条件的数据
        List<Item> result = list2.Where(item => list1.Any(i => i.Id == searchId && i.Id == item.Id)).ToList();

        // 输出结果
        foreach (var item in result)
        {
            Console.WriteLine($"Id: {item.Id}, Name: {item.Name}");
        }
    }
}

class Item
{
    public int Id { get; set; }
    public string Name { get; set; }
}

在上述示例中,我们使用了`Where`方法来筛选第二个列表(list2)中满足条件的项。条件是通过`Any`方法来检查第一个列表(list1)中是否存在一个项的`Id`等于指定的搜索值(searchId),并且该项的`Id`与第二个列表(list2)中的项的`Id`相等。最后,我们将满足条件的项转换为列表并输出结果。

请根据你的实际需求修改代码中的类和字段名称,以及指定的搜索值。

2、对返回结果中某个字段进行累计求和

如果你想对返回结果中的某个字段进行累加求和,可以使用LINQ的`Sum`方法。以下是修改后的代码示例,在返回结果中对`Id`字段进行累加求和:
 


using System;
using System.Collections.Generic;
using System.Linq;

class Program
{
    static void Main()
    {
        // 创建第一个列表
        List<Item> list1 = new List<Item>
        {
            new Item { Id = 1, Name = "Item 1" },
            new Item { Id = 2, Name = "Item 2" },
            new Item { Id = 3, Name = "Item 3" }
        };

        // 创建第二个列表
        List<Item> list2 = new List<Item>
        {
            new Item { Id = 4, Name = "Item 4" },
            new Item { Id = 2, Name = "Item 2" },
            new Item { Id = 5, Name = "Item 5" }
        };

        // 指定需要查找的值
        int searchId = 2;

        // 使用LINQ查询来找出满足条件的数据,并对Id字段进行累加求和
        int sum = list2.Where(item => list1.Any(i => i.Id == searchId && i.Id == item.Id))
                       .Sum(item => item.Id);

        // 输出结果
        Console.WriteLine($"Sum: {sum}");
    }
}

class Item
{
    public int Id { get; set; }
    public string Name { get; set; }
}

在上述示例中,我们修改了LINQ查询的部分,在`Sum`方法中对满足条件的项的`Id`字段进行累加求和操作

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

一起来学吧

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值