linq 查询用于根据另一个列表从一个列表中进行选择

发布于 2024-12-05 04:41:09 字数 369 浏览 0 评论 0原文

public class Test
{
  int i;
  string s;
}

List<Test> testList = new List<Test>(); //assume there are some values in it.

List<int> intList = new List<int>(){ 1,2,3};

我如何说使用对象的 linq 从 testList 中获取项目,其中 i 位于 intList 中。

类似于 List; testIntList = testList.Where(t=>ti in intList)

public class Test
{
  int i;
  string s;
}

List<Test> testList = new List<Test>(); //assume there are some values in it.

List<int> intList = new List<int>(){ 1,2,3};

How to I say get items from testList where i is in intList using the linq to objects.

something like List<Test> testIntList = testList.Where(t=>t.i in intList)

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

要走就滚别墨迹 2024-12-12 04:41:09

从技术上讲,它是:

List<Test> testIntList = testList.Where(t => intList.Contains(t.i)).ToList();

但是,如果 intList 很大,则可能会很慢,因为 List.Contains 在 O(n) 中执行搜索。更快的方法是使用 HashSet

HashSet<int> intList = new HashSet<int>(){ 1,2,3 };

Technically, it would be:

List<Test> testIntList = testList.Where(t => intList.Contains(t.i)).ToList();

However, that might be slow if intList is large, since List<T>.Contains performs its search in O(n). A faster approach would be to use a HashSet<T>:

HashSet<int> intList = new HashSet<int>(){ 1,2,3 };
樱桃奶球 2024-12-12 04:41:09

这也很有趣并且性能良好:

List<test> finalList = testList.Join(intList, 
                                     test => test.id,
                                     i => i,
                                     (t, i) => t).ToList();

您知道什么时候在 SQL SELECT 中连接表吗?这是使用 Linq to Objects 执行此操作的方法。

This would also be interesting and would perform well:

List<test> finalList = testList.Join(intList, 
                                     test => test.id,
                                     i => i,
                                     (t, i) => t).ToList();

You know when you join tables in a SQL SELECT? This is how to do it using Linq to Objects.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文