【问题标题】: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 =&gt; p) 被编译器省略,但对于非平凡 投影或平凡 查询,.Select(...)被保留)

    【讨论】:

    • 谢谢,回答得很好!
    【解决方案2】:

    p 表示引用的集合中的每个特定项目 (db.Products)。请参阅 MSDN 上的 from

    var 是语法糖——它解析为从 LINQ 查询返回的类型,将类型分配给变量 r。请参阅 MSDN 上的 var

    为了更好地理解LINQ,我建议阅读101 LINQ Samples

    【讨论】:

      【解决方案3】:

      from p 表示来自db.Productvar 的任何记录 r 表示collection of p

      整个语句意味着给我来自db.Products 的所有记录(p),其中p.UnitPrice 大于 15

      请参阅this 问题以了解有关var 的更多信息

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2010-09-16
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2010-12-01
        相关资源
        最近更新 更多