LINQ Lambda,分组列表

ger*_*b0n 8 c# linq database entity-framework notsupportedexception

我找到正确的语法来完成以下操作时遇到了一些麻烦:

是否可以使用LINQ(Lambda Expression)到.GroupBy数据,而不是使用通常的.Sum()或.Count(),我希望结果数据是Int的列表.

我定义了自己的类:Filter_IDs.它的构造函数需要两个参数:

public int? type; // Represents the object_type column from my database
public List<int?> objects; // Represents the object_id column from my database
Run Code Online (Sandbox Code Playgroud)

我想将数据库中的数据加载到此对象中.以下LINQ查询应该生成Filter_ID列表:

以下LINQ查询应该生成Filter_ID列表:

List<Filter_IDs> filterids = ef.filterLine
        .GroupBy(fl => fl.objectType)
    .Select(fl => new Filter_IDs { type = fl.Key, objects = fl.Select(x => x.object_id).ToList() })
    .ToList();
Run Code Online (Sandbox Code Playgroud)

使用此查询不会产生构建错误,但会在RunTime上显示"NotSupportedException".

数据库看起来像这样可以让您更好地理解数据:

http://d.pr/i/mnhq+(droplr image)

提前谢谢,Gerben

Kek*_*Kek 11

我认为问题是DB无法在select中调用ToList,也无法创建新的Filter_ID.

尝试这样的事情:

List<Filter_IDs> filterids = ef.filterLine.Select(o => new { objectType = o.objectType, object_id=o.object_id})
    .GroupBy(fl => fl.objectType).ToList()
    .Select(fl => new Filter_IDs { type = fl.Key, objects = fl.Select(x => x.object_id).ToList() })
    .ToList();
Run Code Online (Sandbox Code Playgroud)