我的应用程序中有以下代码
var query = context.xosAssets.Where(x => x.GSA == 0).Take(INDEX_ASSET_QUERY_COUNT);
var assets = query.ToList();
// Debug
string message = string.Format("Assets waiting for indexing: {1}{0}Database:{3}{0}Query: {2}",
Environment.NewLine, query.Count(), query.ToString(), context.Connection.Database);
System.Diagnostics.EventLog.WriteEntry("GSAFeed", message, System.Diagnostics.EventLogEntryType.Information);
运行时,query.Count()
为零,assets.Count
为零,因为不返回任何结果。但是,这是不正确的,因为此数据库中的所有记录都将其GSA
字段设置为零。
当我从query.ToString()
获取输出并运行它(将@p0
替换为0)时,我得到了所有正确的响应。我已经验证了我与context.Connection.Database
输出的数据库完全相同,而且我对可能出错的选项用完了。
为什么Linq-to-sql没有返回结果,即使实际的sql有效?
答案 0 :(得分:0)
过去我遇到过这样的问题,我一般会以长篇形式重新编写Linq2Sql。它让我摆脱了麻烦。不够专业,不知道为什么,但它可以帮助你。
修改强> 像这样:
var query = (from x in context.xosAssets
where x.GSA == 0
select x).Take(INDEX_ASSET_QUERY_COUNT);
这应返回IQueryable,因此无需执行.ToLIst()