C# 是否向LINQ LET查询添加条件?

C# 是否向LINQ LET查询添加条件?,c#,linq,C#,Linq,我希望能够将if语句添加到linq查询中,以添加第二个LET。有人知道这是否可能吗?谢谢 var query = from d in myList group d by d.Date into v let dataSum = nv.Sum(x => x.Data) select new MyObject(){ Date = nv.Key.Date, Data = dataSum} //Invalid I know... but something like this is what I'

我希望能够将if语句添加到linq查询中,以添加第二个LET。有人知道这是否可能吗?谢谢

var query = from d in myList
group d by d.Date
into v
let dataSum = nv.Sum(x => x.Data)
select new MyObject(){ Date = nv.Key.Date, Data = dataSum}

//Invalid I know... but something like this is what I'm looking for
var query = from d in myList
group d by d.Date
into v
let dataSum = nv.Sum(x => x.Data)
if(secondaryData){ let dataSum2 = nv.Sum(x.Data2)}
select new MyObject(){ Date = nv.Key.Date, Data = dataSum}

您可以使用if速记:

let dataSum2 = secondaryData ? nv.Sum(x.Data2) : 0
试试这个

List<Product1> prods = new List<Product1>();
        prods.Add(new Product1() { ProductPrice = 1, ValidFrom = DateTime.Today });
        prods.Add(new Product1() { ProductPrice = 3, ValidFrom = DateTime.Today });
        prods.Add(new Product1() { ProductPrice = 2, ValidFrom = DateTime.Today.AddDays(-1) });
        prods.Add(new Product1() { ProductPrice = 5, ValidFrom = DateTime.Today.AddDays(-2) });
    // Put any logic you want in sumFunc. For any field you want like ProductPrice 
    Func<Product1, decimal> sumFunc = (p) => p.ProductPrice;

    var result = from c in prods
                 group c by c.ValidFrom into gd
                 let sum = gd.Sum(sumFunc)
                 select sum;
List prods=new List();
Add(newproduct1(){ProductPrice=1,ValidFrom=DateTime.Today});
Add(newproduct1(){ProductPrice=3,ValidFrom=DateTime.Today});
Add(newproduct1(){ProductPrice=2,ValidFrom=DateTime.Today.AddDays(-1)});
Add(newproduct1(){ProductPrice=5,ValidFrom=DateTime.Today.AddDays(-2)});
//在sumFunc中输入您想要的任何逻辑。对于任何您想要的领域,如ProductPrice
Func sumFunc=(p)=>p.ProductPrice;
var结果=产品中的c
c组由c.ValidFrom进入gd
设sum=gd.sum(sumFunc)
选择sum;

LINQ不是这样使用的。你想做什么?@SLaks我试图使查询足够通用,以便能够在需要求和2列的情况下使用。我可以写两个查询,但它们几乎相同。@NullReference,一个从无效语法开始的问题不太可能产生有用的结果(并且作为参考很有用,而不仅仅是您的特定问题)。我建议你从你真正想要完成的事情开始。@DiegoMijelshon我添加了“无效语法”作为我正在寻找的示例。。。我会在问题中加上这一点作为注释。@NullReference是的,但这并不是一个好问题。Amiram有一个答案,可以为您提供一个可能的语法,但不可能知道这是否是您真正需要的。三元运算符,供将来参考。=)@实际上,它是一个条件运算符。三元运算符是一个需要3个参数的运算符,通常称之为三元运算符,两者都可以接受。即使微软将其命名为条件运算符,也是如此。然后,众所周知的维基百科将其命名为三元运算符