基于Id的列表获取记录列表

时间:2017-08-24 08:14:39

标签: c# linq

我有这个IDS列表

var profileID=(PMSdb.Tbl1.Where(x=>x.ID==_ID)).ToList();

我想基于此List从数据库中获取,所以我使用了

   var Profiles = new List<Profile>(crmcontext.Profile.Where(x=>profileIDs.Contains(x.Profile_ID)));

效果很好但是 它将获得包含此值的所有Id不是确切的值 例如 如果我的ProfileIDs列表是 [1,2,5] 和配置文件表ID是 [12,1,25,112]

它将使所有这些不仅ID = 1

我怎么能得到这个?

1 个答案:

答案 0 :(得分:0)

编辑:您的代码应该完美无缺,忽略下面的内容......

我刚试过一个测试项目

var ids = new List<int>{1, 2, 5, 10, 25};
var targetIds = new List<int>{1, 1010, 5, 10, 255};
var Profiles = targetIds.Where(x=>ids.Contains(x));

foreach(var p in Profiles)
{                
    Console.WriteLine(p);
}

并输出

1
5
10

表示它没有取1010值。您确定在您的示例中出现了错误的行吗?如果这样做,它来自SQL,而不是LINQ。

这意味着如果您执行以下操作,它应该可以正常工作

var Profiles = new List<Profile>(crmcontext.Profile.ToList().Where(x=>profileIDs.Contains(x.Profile_ID)));

警告这会将您的整个表格转换为一个列表 - 如果表格包含大量数据,请不要使用