我想我已经阅读了有关该主题的所有文章,但似乎仍然无法使它起作用。
我想用动态Linq复制以下GroupBy。我已经尝试过此Dynamic GroupBy,但似乎无法获取First()。

var result = mydata
    .GroupBy(g => g.ID)
    .Select(z => z.First())
    .Select("new (ID, Field1, Field2)");


GroupBy必须是动态的。我需要分组字段的第一行。
所以..

ID:1, Field1:W, Field2:L
ID:1, Field1:A, Field2:B
ID:2, Field1:A, Field2:B
ID:2, Field1:C, Field2:D


最终应该是:

ID:1, Field1:W, Field2:L
ID:2, Field1:A, Field2:B
OR
ID:1, Field1:A, Field2:B
ID:2, Field1:C, Field2:D

最佳答案

我通过添加到DynamicQueryable解决了它

public static object First(this IQueryable source)
        {
            if (source == null) throw new ArgumentNullException("source");
            return source.Provider.Execute(
                Expression.Call(
                    typeof(Queryable), "First",
                    new Type[] { source.ElementType },
                    source.Expression));
        }


以上不是必需的..但是还是为了保持一致性而添加。

并添加到IEnumerableSignatures

void First()


查询变为:

var result = mydata
    .GroupBy("ID", "it")
    .Select("it.First()")
    .Select("new (ID, Field1, Field2)");

关于c# - 动态Linq在GroupBy之后在组中选择第一,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/30536807/

10-17 00:16