LINQ-LINQ to SQL与LINQPad的结果不同
我使用LINQtoSQL和LINQPad执行相同的查询,但是结果集略有不同 代码是LINQ-LINQ to SQL与LINQPad的结果不同,linq,linq-to-sql,linqpad,Linq,Linq To Sql,Linqpad,我使用LINQtoSQL和LINQPad执行相同的查询,但是结果集略有不同 代码是 var conn = new SqliteConnection ( "DbLinqProvider=Sqlite;" + "Data Source=/home/larsenma/database.golden" ); Models.Main db = new Models.Main (conn); var runSum = from rr
var conn = new SqliteConnection (
"DbLinqProvider=Sqlite;" +
"Data Source=/home/larsenma/database.golden"
);
Models.Main db = new Models.Main (conn);
var runSum =
from rr in db.Runrecords
group rr by rr.RunID into rg
select new
{
LaneCount = rg.Count(),
}
LINQPad正确地计算LaneCount,而使用LINQ to SQL时,我为每条记录得到1
使用LINQ到SQL,我使用sqlmetal生成DBLinq的映射,使用LINQPad生成IQ驱动程序。我的数据库是SQLite
我对LINQ这个东西还不太熟悉,有没有什么想法我哪里出了问题
编辑
我已经将我的查询简化为最简单的可复制实例。当我调试生成的SQL时,我得到
SELECT (SELECT COUNT(*))
FROM runrecords
GROUP BY RunID
这是第二次计数,它遗漏了一些东西
谢谢。听起来您使用的是DBLinq,而不是linqtosql。sqlmetal工具生成实体类和类型化的DataContext——但是,如果您使用的是DBLinq,那么实际上是DBLinq将LINQ转换为SQL 当我在一两年前最后一次研究DBLinq时,它相当原始,甚至在一些基本查询上也出现了问题。LINQPad的IQ驱动程序使用可能是最复杂的供应商不可知引擎,用于将LINQ转换为SQL。另一个很好的引擎是DevArt的LinqConnect库,它在最近取得了长足的进步,还支持SQLite
现在,我正在更新IQ驱动程序以支持Oracle,并计划发布一些IQueryable库本身的增强功能。你为什么不试试使用这个或德瓦特的图书馆。谢谢乔。你说得对。我没有意识到mono中包含的LINQ到SQL的实现是DBLinq。在我的问题中应该提到这一点。IQueryable工具包是开源的,所以您可以在Mono中成功编译它。让我知道你进展如何。