我写这段代码:
Rep_Regions clsr = new Rep_Regions();
Func<Regions, bool> filter = r => r.RegionID == int.Parse(textBox5.Text);
Regions reg = new Regions();
reg = clsr.FindSingle(filter);
和:
public Regions FindSingle(Func<Regions, bool> exp)
{
using (RepositoryDataContext = new DataClasses1DataContext())
{
return RepositoryDataContext.Regions.Where(exp).FirstOrDefault();
}
}
这是在 SQL Server 中执行的查询:
SELECT [t0].[RegionID], [t0].[RegionDescription]
FROM [dbo].[Region] AS [t0]
为什么查询不过滤结果并返回所有行?
最佳答案
您已经使用了Func<Regions, bool> filter
这会强制它在服务器上运行未过滤的查询后使用 LINQ-to-Objects。要使用查询组合,您必须使用表达式树,而不是委托(delegate)。
将其更改为:
int regionId= int.Parse(textBox5.Text);
Expression<Func<Regions, bool>> filter = r => r.RegionID == regionId;
关于c# - linq to sql 中的奇怪行为在不过滤的情况下返回所有行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6409736/