c# - 下面这个语句有什么问题

标签 c# linq linq-to-sql linqpad

下面这段话有什么问题?在语言设置为“C# 语句”的 LinqPad 中运行它时,我得到“;预期”。

from p in Products where p.UnitPrice > 50 select new {p.ProductID };

现在看来,如果我将它分配给任何变量;我没有收到任何错误。但令我感到困惑的是,尽管我没有将它分配给任何变量,但下面的语句工作正常并返回结果给我。有什么想法吗?

    from p in Products
let spanishOrders = p.OrderDetails.Where ( o=> o.Order.ShipCountry == "Spain")
where spanishOrders.Any()
group new
{
    p.ProductName,
    Orders = spanishOrders.Count(),
    spanishOrders
}
by p.Category.CategoryName

编辑:这是我的错,实际上我无法运行第二个示例而不将其分配给变量。

最佳答案

LINQ 查询表达式不是 C# 中的合法语句。您需要在有效语句中使用表达式。

例如,您可以将表达式用作赋值语句的右侧:

var expensiveProductIds = from p in Products
                          where p.UnitPrice > 50 
                          select new { p.ProductID };

在我看来,您似乎并不真正了解 LINQ 的全部内容。您期望您的裸查询表达式做什么?

编辑:查看 Alex Moore 的回答,了解如何使其在 LINQPad 中运行。

顺便说一下,如果您仍想坚持使用“C# 语句”模式,这里有一种方法可以将查询结果写入控制台:

var expensiveProductIds = from p in Products
                          where p.UnitPrice > 50 
                          select new { p.ProductID };

expensiveProductIds.Dump();

关于c# - 下面这个语句有什么问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8011303/

相关文章:

c# - 从IOS图片上传到.net app : Rotate

c# - 如何使用 LINQ 按多个列排序

c# - 在存在触发器的情况下从 linq 到 sql 向 sql server 插入行时出错

c# - Linq查询问题

c# - asp.net在网站中添加自定义控件

c# - MS Access 查询设计器 - 使用标准 .NET 3.5 控件的类似功能?

c# - 获取当前消息框

c# - 您可以使用 LINQ 或 LAMBDA 表达式对一行中的字符串进行反向排序吗

c# - 林奇 : saving files to a database

c# - 从 linq to sql 中的子查询中选择前 1 个结果