2012-03-09 90 views
4

我在我的应用程序下面的代码LINQ到SQL代码没有返回结果,即使生成的SQL不会返回结果

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()输出并运行它(替换为0 @p0),我得到的所有的正确答案。我已经验证了我“完全相同的数据库M上为正在context.Connection.Database输出,我跑出来的什么可能是错误的选择。

为什么LINQ到SQL没有返回结果,即便是实际的SQL不?

+0

什么是'INDEX_ASSET_QUERY_COUNT'设置? – 2012-03-09 15:58:53

+0

什么数据类型是'.GSA'? – 2012-03-09 15:59:10

+0

'GSA'是一个short,而'INDEX_ASSET_QUERY_COUNT'是一个int const,设置为250,它在输出SQL中的TOP()调用中正确显示。 *编辑*前夕没有顶部通话它仍然失败。 – KallDrexx 2012-03-09 16:00:56

回答

0

香港专业教育学院跑进过去像这样的问题,我一般以长形式&重新写LINQ2SQL它得到了我麻烦。不是高手,足以知道为什么,但它可以帮助你。

编辑 类似这样的:

var query = (from x in context.xosAssets 
      where x.GSA == 0 
      select x).Take(INDEX_ASSET_QUERY_COUNT); 

这应返回的IQueryable所以没有必要进行.ToLIst()

+0

长形意味着什么? – KallDrexx 2012-03-09 16:05:33

+0

请参阅上面的我的编辑 – LenPopLilly 2012-03-09 17:34:06