【发布时间】:2017-08-04 03:06:53
【问题描述】:
我想使用 Linq 一次通过多个主键从数据库中查询数据。但是,我将主键存储在 Dictionary<int, string>
我的字典
private Dictionary<int,string> dict = new Dictionary<int, string>
{
{1, "Value 1"},
{2, "Value 2"},
{3, "Value 3"},
{4, "Value 4"},
{5, "Value 5"},
{6, "Value 6"}
};
在原始 SQL 中
SELECT * FROM Article WHERE ArticleId IN (1,2,3,4,5,6);
我在 Linq 中试过
var article = new NewsEntities().Articles;
var mainArticles = article.Where(a => dict.ContainsKey(a.ArticleId));
foreach (var mainArticle in mainArticles)
{
Console.WriteLine(mainArticle.ArticleId);
}
我遇到的错误
System.NotSupportedException: 'LINQ to Entities 无法识别 method 'Boolean ContainsKey(Int32)' 方法,并且该方法不能 翻译成商店表达式。'
【问题讨论】:
-
尝试添加
AsEnumerable:article.AsEnumerable().Where(a => dict.ContainsKey(a.ArticleId));。 -
Tetsuya Yamamoto 它给了我一个错误的结果。
-
那你有什么不正确的结果?您想使用
Console.WriteLine显示什么值? -
我想要获取 Article 对象,但它只给了我一行。
-
只需使用
ToList:article.ToList().Where(a => dict.Contains(a.ArticleId));。不需要在那里使用ContainsKey。
标签: c# sql-server entity-framework linq dictionary