Linq to sql 具有包含列表的where子句的LinqtoSQL?

Linq to sql 具有包含列表的where子句的LinqtoSQL?,linq-to-sql,linq-to-objects,Linq To Sql,Linq To Objects,我对这件事研究得很透彻。这里似乎已经有了一些答案,但坦率地说,这些答案让我感到困惑。因此,我将尽可能地使其成为基本的 如果我在数据库中有一个表,“People”有一个name列(string)和一个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.A

我对这件事研究得很透彻。这里似乎已经有了一些答案,但坦率地说,这些答案让我感到困惑。因此,我将尽可能地使其成为基本的

如果我在数据库中有一个表,“People”有一个name列(string)和一个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;
List ages=new List();
增列(39);
增列(40);
var结果=人的p值
其中ages.Contains((int)p.Age)
选择p;
语法正在传递,但不返回任何内容(在VS2010和LinqPad中)。这难道不应该用where子句生成一个SQL语句,其中包含我列表中的年龄吗


简单回答谁?(理想情况下,如果您可以修改我的示例并使其正常工作……那太好了!)

如果您是以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();
var ints=新列表{1,2,3,4,5,6,7,8,9,10};
var Merchandiser=(新的DataClasses1DataContext())。Merchandisers;
var结果=来自Merchandiser中的m
其中ints.Contains(m.Id)
选择m;
foreach(结果中的var项目)
{ 
Console.WriteLine(项目名称);
} 
Console.ReadLine();

p.Age的数据类型是什么?您可以使用context.Log=Console.Out或从SQL Profiler发布结果SQL查询吗?顺便问一下,这是linq2objects还是linq2SQL?哦,我只铸造了p.Age(它是一个Int),因为它在db中是可选的。另外,如果您阅读上面的“People”是一个数据库表,但显然ages是一个对象。5人,年龄从39岁到41岁不等。在你的例子中,lambda表达式中的a是一个int,它没有“Contains”的定义对不起,在发布之前必须学会喝完咖啡,所以我加了这个,它对我有效var ints=new List{1,2,3,4,5,6,7,8,9,10};var Merchandiser=(新的DataClasses1DataContext())。Merchandisers;var结果=从Merchandiser中的m开始,其中ints.Contains(m.Id)选择m;foreach(结果中的var项){Console.WriteLine(item.Name);}Console.ReadLine();那么你确定你正在连接数据库和生成的表吗?奇怪。。我在一个新项目中把它放进了VisualStudio,它成功了。。。LinqPad仍然没有返回任何内容,而我的实际项目(稍微复杂一些)也没有返回任何内容…编辑你的答案,让它工作,我将标记这一个答案(仍然需要知道为什么更复杂的一个不工作…(也许我应该在这里发布?)