110,533
社区成员
发帖
与我相关
我的任务
分享
public class User
{
// 姓名
public string Name { get; set; }
// 金额
public int Amount { get; set; }
}
//所有销售汇总
List<User> Sales = new List<User>() {
new User(){ Name="张三",Amount=88}, //有进货又有销售
new User(){ Name="李四",Amount=99} //只有销售
};
// 所有进货汇总
List<User> Purchase = new List<User>() {
new User(){ Name="张三",Amount=30},//有进货又有销售
new User(){ Name="王五",Amount=20} // 只有进货
};
{Name:"张三",SaleAmount=88, PurchaseAmount=30,Profit=58},
{Name:"李四",SaleAmount=99, PurchaseAmount=0,Profit=99},
{Name:"李四",SaleAmount=0, PurchaseAmount=20,Profit=-20}
void Main()
{
//所有销售汇总
List<User> Sales = new List<User>() {
new User(){ Name="张三",Amount=88}, //有进货又有销售
new User(){ Name="李四",Amount=99} //只有销售
};
// 所有进货汇总
List<User> Purchase = new List<User>() {
new User(){ Name="张三",Amount=30},//有进货又有销售
new User(){ Name="王五",Amount=20} // 只有进货
};
var result = from p in (Sales.Select(x=>x.Name)).Union(Purchase.Select(x=>x.Name))
join s in Sales on p equals s.Name into ps
from s in ps.DefaultIfEmpty()
join pc in Purchase on p equals pc.Name into pcp
from pc in pcp.DefaultIfEmpty()
let salesAmount = s == null ? 0 : s.Amount
let purchaseAmount = pc == null? 0 : pc.Amount
select new
{
Name = p,
SaleAmount = salesAmount,
PurchaseAmount = purchaseAmount,
Profit = salesAmount - purchaseAmount
};
result.Dump();
}
public class User
{
// 姓名
public string Name { get; set; }
// 金额
public int Amount { get; set; }
}