下面这段话有什么问题?在语言设置为“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/