C# 可以更改但可以分组的LINQ查询?

C# 可以更改但可以分组的LINQ查询?,c#,linq,C#,Linq,这是我想做的事情。我知道您可以再次查询linq结果,但由于这些结果是分组的,我不知道如何查询。我认为我能想到的最好办法是使用一个查询来获取所有内容,然后执行if语句,然后执行另一个对所有内容进行分组的查询(因此使用3个单独的查询,而不是1个)。关于如何最好地做这类事情有什么想法吗 var Result = from a in DB.Table if(Something == 0) { where a.Value > 0 } gro

这是我想做的事情。我知道您可以再次查询linq结果,但由于这些结果是分组的,我不知道如何查询。我认为我能想到的最好办法是使用一个查询来获取所有内容,然后执行if语句,然后执行另一个对所有内容进行分组的查询(因此使用3个单独的查询,而不是1个)。关于如何最好地做这类事情有什么想法吗

var Result =
    from a in DB.Table

    if(Something == 0)
    {
        where a.Value > 0
    }

    group a by a.Value into b
    select new {Group = b};

可以使用“where”语句限制Linq查询。试着用它来锻炼。比如:

var res= 从数据库表中的c开始 其中c.Id==1
选择c

这是否符合您的要求

        var result =
        from a in DB.Table
        group a by a.Value into g
        where !Something.Equals(0) || g.Key > 0
        select new { Group = g };

第一个语句需要一个select?您实际上不需要select,但可以有一个。关键是它应该是IQueryablew。如果您从in DB.Table中选择一个或仅从in DB.Table中选择一个,则两者的返回类型都为IQueryable@Soo只需从数据库中的表中选择一个。。。或者Db.Table.AsQueryable(),除了这个答案就是它+1您甚至不需要Db.Table.AsQueryable()。如果转到Db上表属性的定义,它不是IQueryable吗?
        var result =
        from a in DB.Table
        group a by a.Value into g
        where !Something.Equals(0) || g.Key > 0
        select new { Group = g };