【问题标题】:LINQ Select elements of list<T> if list<int> contains any id of list<T>如果 list<int> 包含 list<T> 的任何 id,则 LINQ 选择 list<T> 的元素
【发布时间】:2018-07-20 05:58:18
【问题描述】:

我正在使用 C# 6 进行 LINQ 查询。如果给定的 list&lt;int&gt; 包含 list&lt;T&gt; 的任何 Id,我会尝试选择列表的所有元素。

我的模型类以及数据结构如下所示:

public class Project 
{
   public int ID { get; set; }
   public string Title { get; set; }
}

List<Project> projects = projectService.GetProjects();

List<int> bookmarkIds = new List<int>( new int[] { 1, 4, 7 });

我当前的 LINQ 查询如下所示:

var bookmarks = projects?.Select(x => bookmarkIds.Any(y => y == x.ID)).ToList();

很遗憾,这个查询不起作用。

您知道如何从项目列表中选择所有具有 ID 的项目,也可以在 bookmarkIds 列表中找到吗?

谢谢!!

【问题讨论】:

标签: c# asp.net list linq


【解决方案1】:
var bookmarks = projects?.Where(x => bookmarkIds.Contains(x.ID)).ToList();

尽管在您的特定情况下,您可能希望考虑使用 HashSet 来存储您的书签 ID(假设它们的顺序无关紧要)。这些非常适合检查 ID 是否存在。

【讨论】:

    猜你喜欢
    • 2021-08-25
    • 2011-09-09
    • 2020-05-23
    • 1970-01-01
    • 2012-08-23
    • 1970-01-01
    • 1970-01-01
    • 2012-11-21
    • 1970-01-01
    相关资源
    最近更新 更多