c# - Linq 与数组相交

标签 c# .net linq

我从数据库中获取了一个表标签。

表格有 ID 和 TagName 列

我正在做这样的事情来获取字符串列表:

var taglist = Model.Tags.Select(x => x.TagName.ToLower()).ToArray();

然后我将与另一个字符串数组进行比较,以获取同时出现在两者中的字符串:

var intersectList = tagList.Intersect(anotherList);

我有我的列表,但现在我还想要保留在与 tagList 相对应的相交列表中的每个项目的 ID。 (可以只是一个 int 数组)

谁能提供一个好的方法来做到这一点?

最佳答案

不要使用相交,它只适用于相同类型的集合。您可以进行简单的连接或其他形式的过滤。最简单的方法是将字符串列表放入 HashSet 并按该集合中包含 TagName 的标签进行过滤。这样一来,您的标签就不会被投影,因此它们会保留自己的 ID 和其他属性。

var stringSet = anotherList.ToHashSet(StringComparer.OrdinalIgnoreCase);
var tagList = Model.Tags.Where(t => stringSet.Contains(t.TagName)).ToList();

并将它们放入列表中。不要将它们放入数组中,除非您特别需要一个数组(用于需要数组的方法)。

关于c# - Linq 与数组相交,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8963702/

相关文章:

c# - 是否可以创建可以在 C# 中多次嵌套泛型类型的流畅接口(interface)

c# - .NET 毛伊岛 : Check checkbox when clicking on label

linq - linq 为存储过程的两次不同执行返回相同的数据?

C# 使用 LINQ 限制递归列表

c# - Entity Framework Core 和 SQL Server 2016 时态表

c# - NTLM 通过 HTTP : Any C# client implementation?

javascript - 从 Ext JS 4.2 调用 aspx 时遇到问题

c# - .NET 中令人尴尬的可并行任务

c# - 自动添加/删除联合表中的行

c# - 将 MySql 与 EntityFramework 5.0、SimpleMembership 一起使用,多个错误