我从数据库获取表格。
该表具有列ID和TagName
我正在做这样的事情来获得字符串列表:
var taglist = Model.Tags.Select(x => x.TagName.ToLower()).ToArray();
然后我正在与另一个字符串数组进行比较,以获得两者中出现的字符串:
var intersectList = tagList.Intersect(anotherList);
我有我的列表,但现在我还想要保留在交叉列表中与tagList对应的每个项目的ID。 (可以只是一个int数组)
任何人都可以帮忙做一个好方法吗?
答案 0 :(得分:6)
不要使用intersect,它只适用于相同类型的集合。您可以进行简单的连接或其他形式的过滤。最简单的方法是将字符串列表放入HashSet
并按该集合中包含TagName
的标记进行过滤。通过这种方式,您可以保持标记不被投影,以便保留其ID和其他属性。
var stringSet = new HashSet<string>(anotherList);
var tagList = Model.Tags.Where(t => stringSet.Contains(t.TagName)).ToList();
并将它们列入清单。除非您特别需要一个数组(用于需要数组的方法),否则不要将它们抛入数组中。
答案 1 :(得分:0)
也许使用Dictionary<int, string>
代替Array
?
答案 2 :(得分:0)
你能做到:
var intersectIds = Model.Tags
.Where(tag => anotherList.Contains(tag.TagName))
.Select(tag => tag.Id)
.ToList();