前言
在.net中可以通过linq计算第二个列表
list2
中特定字段的总和,并且要求满足该字段的某个值包含在第一个列表list1
中的任何一个值,可以使用 LINQ 查询语句来实现
示例
using System;
using System.Collections.Generic;
using System.Linq;
class Program
{
static void Main(string[] args)
{
List<Item> list1 = new List<Item>()
{
new Item { Id = 1, GroupId = "A" },
new Item { Id = 2, GroupId = "B" },
new Item { Id = 3, GroupId = "C" }
};
List<OtherItem> list3 = new List<OtherItem>()
{
new OtherItem { ItemId = 1, Value = 10 },
new OtherItem { ItemId = 2, Value = 20 },
new OtherItem { ItemId = 3, Value = 30 },
new OtherItem { ItemId = 4, Value = 40 }
};
var sum = list3
.Where(item => list1.Any(listItem => listItem.GroupId.Contains(item.ItemId.ToString())))
.Sum(item => item.Value);
Console.WriteLine($"Sum: {sum}");
}
}
class Item
{
public int Id { get; set; }
public string GroupId { get; set; }
}
class OtherItem
{
public int ItemId { get; set; }
public int Value { get; set; }
}
在上述示例中,我们首先创建了 list1
和 list3
作为示例数据。然后,我们使用 Where
方法筛选出满足条件的 list3
中的元素。在筛选条件中,我们使用 list1.Any()
方法来检查 listItem.GroupId
是否包含 item.ItemId
的字符串表示形式。最后,我们使用 Sum
方法计算满足条件的元素的特定字段的总和。