Linq中Lambda表达式类之外的字段的where子句

时间:2013-05-22 14:42:54

标签: linq

如果我使用以下代码将产品选择到类名产品中,我怎样才能在不将类添加到产品类的情况下添加Where子句enabled = true?

        List<Products> lp = db.products.Select(product => new Products
        {
            Name = product.name,
            Description = product.description,
            Category = product.Category
        }).ToList();

添加 .Where(x =&gt; x.enabled == true)不起作用,因为 enabled 不是Products类的一部分,只是产品表。

5 个答案:

答案 0 :(得分:4)

    List<Products> lp = db.products
        .Where(p => p.enabled)
        .Select(product => new Products
        {
            Name = product.name,
            Description = product.description,
            Category = product.Category
        }).ToList();

这也是一个很好的练习建议,我以单数形式命名该课程,Product

答案 1 :(得分:4)

我假设您尝试过滤产品列表而不是表格。所以你必须先加Where。这样做的好处是可以在数据库中而不是在内存中进行过滤。

List<Products> lp = db.products
.Where(p => p.enabled)
.Select(product => new Products
{
    Name = product.name,
    Description = product.description,
    Category = product.Category
}).ToList();

旁注:您应该遵循.NET命名约定。例如,使用pascal case属性或类名。一个类通常应该是单数,如果你想要多个类型使用List<Product>

答案 2 :(得分:2)

List<Products> lp = db.products
    .Where(x => x.enabled==true)
    .Select(product => new Products
    {
        Name = product.name,
        Description = product.description,
        Category = product.Category
    }).ToList();

答案 3 :(得分:1)

List<Products> lp = db.products.Where(product => product.enabled).
    Select(product => new Products
    {
        Name = product.name,
        Description = product.description,
        Category = product.Category
    }).ToList();

答案 4 :(得分:0)

var filter1 = Enumerable.Range(0, 50).Where(c => c % 2 == 0).Select(c => c).ToList();

Console.WriteLine(filter1[3]);

filter1.Insert(4, 13);

foreach (var v in filter1)
{
  Console.WriteLine(v);
}