我有一个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;
}
答案 0 :(得分:1)
如果使用EF,则将其声明为IQueryable<Sale>
;如果使用LINQ to Objects,则将其声明为IEnumerable<Sale>
。
如果将鼠标悬停在sales
上,Visual Studio可以告诉您要使用的内容。
答案 1 :(得分:1)
您可以将其声明为List<Sale>
(我假设Sales
是Sale
的集合。
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)
{
// ...
}