我有两个列表(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
};