Linq to SQL简短问题

时间:2011-05-15 15:05:53

标签: c# .net sql sql-server windows

我在下面有一个查询。虽然有人能指出“从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

3 个答案:

答案 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.Productvar r的任何记录表示collection of p

整体声明表示从db.Products p.UnitPrice大于15

的所有那些记录(p)

请参阅this问题以了解有关var

的更多信息