我有这个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
我怎么能得到这个?
答案 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)));
警告这会将您的整个表格转换为一个列表 - 如果表格包含大量数据,请不要使用