简体   繁体   English

Linq变量声明条件语句

[英]Linq variable declare conditional statement

I have a LINQ query that will have two different results from the variable "filter". 我有一个LINQ查询,它将从变量“ filter”获得两个不同的结果。 How to I declare the query variable "sales" outside the conditional statement? 如何在条件语句之外声明查询变量“ sales”?

        Int filter = sale.filter;

        if (filter is null)
        {
            var sales = from s in _db.Sales
                select s;
        }
        else
        {
           var  sales = from s in _db.Sales
                where s.SalesStatusID == salesStatusfilter
                select s;
        }

Declare it as IQueryable<Sale> if using EF or IEnumerable<Sale> if using LINQ to Objects. 如果使用EF,则将其声明为IQueryable<Sale> IEnumerable<Sale>如果使用LINQ to Objects,则将其声明为IEnumerable<Sale>

If you hover over sales , Visual Studio can tell you what to use. 如果将鼠标悬停在sales ,Visual Studio可以告诉您使用什么。

You can declare it as a List<Sale> (I'm supposing Sales is a collection of Sale 's. 您可以将其声明为List<Sale> (我假设SalesSale的集合。

    Int filter = sale.filter;

    List<Sale> sales;

    if (filter == null) {
        sales = _db.Sales.ToList();
    }
    else
    {
        sales = _sb.Sales
                .Where(s => s.SalesStatusID == salesStatusfilter)
                .ToList();
    }

Depending on what you want to do with the data it should suffice. 取决于您要对数据执行什么操作就足够了。

You can add Where based on the condition, which give you possibility to using var without declaring type explicitly. 您可以根据条件添加Where ,这使您可以使用var而无需显式声明类型。

var sales = _db.Sales;
if (filter != null)
{
    sales = sales.Where(s => s.SalesStatusID == salesStatusfilter);
}

// use result later
foreach (var sale in sales)
{
    // ...
}

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM