从一个列表设置另一个列表的特定值

本文关键字:列表 另一个 设置 一个 | 更新日期: 2023-09-27 17:56:56

我有两个列表(listA和listB),它们具有以下强数据类型:

   public class TagPresenter
    {    
        public string TagName { get; set; }
        bool IsEnable { get; set; }     
        public string TagId { get; set; }
    }

当在列表 A 中找到列表 B 的项目时,我需要将列表 A 的 IsEnable 设置为 true。这种比较应该发生在TagId上。A 拥有 B 拥有的所有项目。简而言之,如果 B 有 3 个项目,A 有 10 个项目,那么在这种情况下,我需要 IsEnable 属性在 ListA 中为所有这 3 个项目为 true。我需要在 LINQ 中执行此操作。请帮忙。

从一个列表设置另一个列表的特定值

Linq 中的更新非常混乱 - 使用 Linq 查找匹配项但使用foreach更新它们更惯用

var query =
    from a in listA
    join b in listB on a.TagId equals b.TagId
    select a
    ;
foreach(var a in query)
{
    a.IsEnable = true;
}
这是我

的第一篇文章,所以如果我犯了一个错误,我很抱歉,对不起我的英语。

下面的代码是使用 Linq 更新已加载到内存中的列表的属性:

添加类 =>

   public static class LINQToObjectExtensions
    {
        public static void UpdateAll<T>(this IEnumerable<T> source, Action<T> action)
        {
            foreach (var item in source)
                action(item);
        }
    }

后:

ListA.UpdateAll(p => p.Property = Value);

ListA.Where(p => p.Id = 1).UpdateAll(p => p.Property = Value);

试试这个

var query =
    from a in listA
    join b in listB on a.TagId equals b.TagId
    select new TagPresenter
    {    
       TagName = a.TagName,
       IsEnable = true,
       TagId = a.TagId
    };