【问题标题】:Linq to SQL brief questionLinq to SQL 简短问题
【发布时间】:2011-08-25 22:29:13
【问题描述】:
我在下面有一个问题。虽然有人能指出“从 p”是什么意思吗?还有“var r”?
DataClasses1DataContext db = new DataClasses1DataContext();
var r = from p in db.Products
where p.UnitPrice > 15 // If unit price is greater than 15...
select p; // select entries
【问题讨论】:
标签:
c#
.net
sql
sql-server
windows
【解决方案1】:
r 是组合查询 - IQueryable<Product> 或类似的;请注意查询尚未执行 - 它只是一个待处理的查询。 var 表示“编译器,从右边的表达式中找出 r 的 type”。在这种情况下,您可以明确说明,但不是全部。但它不会增加任何价值,所以var 很好。
p是每个产品的便利标记;查询是“对于每个产品 (p),仅限于单价大于 15 (where p > 15) 的产品,因此选择该产品 (select p)。
最终编译为:
IQueryable<Product> r =
db.Products.Where(p => p.UnitPrice > 15);
(在这种情况下,最终的.Select(p => p) 被编译器省略,但对于非平凡 投影或平凡 查询,.Select(...)被保留)
【解决方案2】:
p 表示引用的集合中的每个特定项目 (db.Products)。请参阅 MSDN 上的 from。
var 是语法糖——它解析为从 LINQ 查询返回的类型,将类型分配给变量 r。请参阅 MSDN 上的 var。
为了更好地理解LINQ,我建议阅读101 LINQ Samples。
【解决方案3】:
from p 表示来自db.Product 和var 的任何记录 r 表示collection of p
整个语句意味着给我来自db.Products 的所有记录(p),其中p.UnitPrice 大于 15
请参阅this 问题以了解有关var 的更多信息