Linq变量声明条件语句

时间:2017-11-01 19:01:39

标签: c# .net linq

我有一个LINQ查询,它将有两个不同的结果来自变量" filter"。如何声明查询变量" 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;
        }

3 个答案:

答案 0 :(得分:1)

如果使用EF,则将其声明为IQueryable<Sale>;如果使用LINQ to Objects,则将其声明为IEnumerable<Sale>

如果将鼠标悬停在sales上,Visual Studio可以告诉您要使用的内容。

答案 1 :(得分:1)

您可以将其声明为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();
    }

根据您对数据的处理方式,它应该足够了。

答案 2 :(得分:0)

您可以根据条件添加Where,这样您就可以在不明确声明类型的情况下使用var

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

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