linq查询执行时返回对应的sql

Posted

技术标签:

【中文标题】linq查询执行时返回对应的sql【英文标题】:Linq query returns corresponding sql when executed 【发布时间】:2014-10-04 10:40:12 【问题描述】:

我已经创建了一个数据库。当我实例化数据上下文并运行查询时(出于查看目的,我附加了一个文本块,因此结果显示在文本块中)我从查询而不是结果中获取 SQL。

数据库:Languages.sdf 表:SentencesDB 数据上下文:LanguagesContext 操作系统:Windows phone 8.1,模拟器

我的代码:

using(LanguagesContext ctx = new LanguagesContext(LanguagesContext.ConnectionString))

   ctx.CreateIfNotExists();
   ctx.LogDebug = true;

   var abc = from p in ctx.SentencesDB
   where p.English == "hello"
   select p.English;

   return abc.ToString();

这是我得到的输出:

SELECT [t0].[English]
FROM [SentencesDB] AS [t0]
WHERE [t0].[English] = @p0

那么,我哪里做错了?

【问题讨论】:

【参考方案1】:

您正在获取 SQL 命令,因为您正在对 linq 查询执行 ToString,其 ToString 就是您得到的。如果你想得到结果,你需要返回 abc 并对其进行 foreach。

【讨论】:

【参考方案2】:

或选择其他查询:

string abc = (from p in ctx.SentencesDb
          where p.English == "hello"
          select p.English).SingleOrDefault("none")
return abc;

第二种方式:

string abc = ctx.SentenceDb
             .SingleOrDefault(p => p.English == "Hello")
             .Select(p => p.English);

【讨论】:

以上是关于linq查询执行时返回对应的sql的主要内容,如果未能解决你的问题,请参考以下文章

存储过程的 Linq2SQL 中没有返回类型

如何使用LINQ返回多个自选字段

LINQ 和 SQL 中看似等效的查询返回不同的结果 [重复]

实体框架/Linq to SQL:跳过和采取

如何在 Web 服务 asp.net 中返回 linq to sql 查询结果?

带有“åäö”的 Linq 查询返回表中的所有项目