我已经研究过这个死亡。这里似乎确实有一些答案,但坦率地说,这些答案让我感到困惑。所以我会尽量使它尽可能基本。
如果我在数据库中有一个表,“People”有一个名称列(字符串)和一个age(int)列。然后我做这样的事情:
List<int> ages = new List<int>();
ages.Add(39);
ages.Add(40);
var result = from p in People
where ages.Contains((int)p.Age)
select p;
语法正在传递,但没有返回任何内容(VS2010和LinqPad中都有)。这不应该使用包含列表中年龄的where子句的SQL语句吗?
简单回答任何人? (理想情况下,如果您可以修改我的示例并使其正常工作......那就太棒了!)
答案 0 :(得分:2)
如果您使用的是Linq2SQL,则表明您正在正确执行此操作以确保对SQL Server进行正确的预测。您可以尝试以稍微不同的方式编写它,例如:
var result = from p in People
where ages.Select(a => a).Contains(p.Age)
select p;
你说它什么都不返回。您确定要返回匹配的记录吗?另外,你在任何地方使用result
吗?如果您不将其绑定到某个内容或将ToList()
调用到其他某个投影交互,则不会执行该查询。
评论样本:
var ints = new List<int> { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
var Merchandiser = (new DataClasses1DataContext()).Merchandisers;
var result = from m in Merchandiser
where ints.Contains(m.Id)
select m;
foreach (var item in result)
{
Console.WriteLine(item.Name);
}
Console.ReadLine();