我在下面有一个查询。虽然有人能指出“从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
答案 0 :(得分:3)
r
是撰写的查询 - IQueryable<Product>
或类似的;请注意查询尚未执行 - 只是 待处理查询。 var
表示“编译器,从右边的表达式中找出r的类型”。你可以在这种情况下明确说明,但不是全部。但它不会添加任何值,因此var
没问题。
p
是每种产品的便利标记;查询是“对于每个产品(p),限制为单价大于15(where p > 15
)的产品,请选择该产品(select p
)。
最终这会编译为:
IQueryable<Product> r =
db.Products.Where(p => p.UnitPrice > 15);
(在这种情况下,编译器省略了最后的.Select(p => p)
,但是使用非平凡的投影或普通查询,{保留{1}}
答案 1 :(得分:1)
p
表示引用的集合中的每个特定项目(db.Products
)。请参阅MSDN上的from
。
var
是语法糖 - 它解析为从LINQ查询返回的类型,将类型分配给变量r
。请参阅MSDN上的var
。
为了更好地理解LINQ,我建议阅读101 LINQ Samples。
答案 2 :(得分:0)
from p
表示来自db.Product
和var
r的任何记录表示collection of p
整体声明表示从db.Products
p.UnitPrice
大于15
请参阅this问题以了解有关var