我希望使用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不认识方法'Boolean ContainsKey(Int32)',且无法将此方法转换为存储表达式。'
AsEnumerable
:article.AsEnumerable().Where(a => dict.ContainsKey(a.ArticleId));
。 - Tetsuya YamamotoConsole.WriteLine
显示什么值? - Tetsuya YamamotoToList
:article.ToList().Where(a => dict.Contains(a.ArticleId));
。不需要在那里使用ContainsKey
。 - Tetsuya Yamamoto