我正在使用C#6中的LINQ查询。如果给定的list<int>
包含list<T>
的任何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();
不幸的是这个查询不起作用。
您是否知道如何从项目列表中选择所有项目,哪些项目也可以在bookmarkIds列表中找到?
谢谢!
答案 0 :(得分:1)
var bookmarks = projects?.Where(x => bookmarkIds.Contains(x.ID)).ToList();
虽然在您的特定情况下,您可能希望使用HashSet来存储您的书签ID(假设它们的顺序并不重要)。这些非常适合检查ID是否存在。