【发布时间】:2014-01-15 21:15:10
【问题描述】:
我有两个 linq 查询,一个是获取 confirmedQty,另一个是获取 unconfirmedQty。
获取unconfirmedQty是有条件的。它应该是平均值而不是总和。
result = Sum(confirmedQty) + Avg(unconfirmedQty)
有没有办法只编写一个查询并获得所需的结果,而不是编写两个单独的查询?
我的代码
class Program
{
static void Main(string[] args)
{
List<Item> items = new List<Item>(new Item[]
{
new Item{ Qty = 100, IsConfirmed=true },
new Item{ Qty = 40, IsConfirmed=false },
new Item{ Qty = 40, IsConfirmed=false },
new Item{ Qty = 40, IsConfirmed=false },
});
int confirmedQty = Convert.ToInt32(items.Where(o => o.IsConfirmed == true).Sum(u => u.Qty));
int unconfirmedQty = Convert.ToInt32(items.Where(o => o.IsConfirmed != true).Average(u => u.Qty));
//Output => Total : 140
Console.WriteLine("Total : " + (confirmedQty + unconfirmedQty));
Console.Read();
}
public class Item
{
public int Qty { get; set; }
public bool IsConfirmed { get; set; }
}
}
【问题讨论】: