Linq与数组相交
本文关键字:数组 Linq | 更新日期: 2023-09-27 18:21:09
我正在从数据库中获取一个表标签。
该表具有列ID和TagName
我正在做这样的事情来获得字符串列表:
var taglist = Model.Tags.Select(x => x.TagName.ToLower()).ToArray();
然后我将与另一个字符串数组进行比较,以获得两者中出现的字符串:
var intersectList = tagList.Intersect(anotherList);
我有我的列表,但现在我还希望每个项目的ID保留在与tagList对应的交集列表中。(可以只是一个int数组)
有人能帮上忙吗?
HashSet
中,并根据该集中包含TagName
的标记进行筛选。这样,你就可以不投影你的标签,这样它们就可以保留它们的id和其他属性。
var stringSet = anotherList.ToHashSet(StringComparer.OrdinalIgnoreCase);
var tagList = Model.Tags.Where(t => stringSet.Contains(t.TagName)).ToList();
并将它们放入一个列表中。除非您特别需要一个数组(用于需要数组的方法),否则不要将它们放入数组中。
你能做吗:
var intersectIds = Model.Tags
.Where(tag => anotherList.Contains(tag.TagName))
.Select(tag => tag.Id)
.ToList();
也许使用Dictionary<int, string>
而不是Array
?