获取嵌套数据并使用嵌套DTO深入DTO

阿扎玛特·伊斯马古洛夫(Azamat Ismagulov)

我一般来说是EF,Linq和C#的新手,但我坚持开发以下对象。我不能将数据映射到这样的结构中:

Id,
Actions [
  Action1,
  Action2,
  Action3
]

我有2个这样的DTO类:

public class TestDTO
{
    public int TestId { get; set; }
    public TestDTO2[] Actions { get; set; }
}

public class TestDTO2
{
    public int TestActionId { get; set; }
    public DateTime? StartDate { get; set; }
    ...
}

我已经将对DB的调用分离到名为BusinessLogic的文件中,我正在这样做:

    public IQueryable<TestDTO> GetNested(Filter filter)
    {
        var query =
                    from a in db.Table1.AsQueryable()
                    select new TestDTO
                    {
                        TestId = a.Id,
                        Actions = (
                            from b in db.Table2.AsQueryable()
                            where a.Id == b.TestId 
                            select new TestDTO2
                            {
                                TestActionId = b.TestActionId,
                                StartDate = b.StartDate
                            }
                        ).ToArray()
                    };
        return query;
    }

我收到以下错误:

LINQ to Entities无法识别方法'Project.Core.Models.TestDTO2 [] ToArrayTestDTO2',并且该方法无法转换为商店表达式。

斯拉瓦·乌特西诺夫(Slava Utesinov)

您不能完全执行此查询,最好进行两个简单的查询,然后在客户端处理它们的结果:

var main = db.Table1.Select(x => new { x.Id, x.Title }).ToList();
var mainIds = main.Select(x => x.Id).ToList();
var actions = db.Table2.Where(x => mainIds.Contains(x.TestId)).Select(x => new 
{ 
    x.TestId,
    x.TestActionId, 
    x.StartDate
}).ToList();

var result = main.Select(x => {
    var actions = actions.Where(y => y.TestId == x.Id).Select(y => new TestDTO2
                  {
                      TestActionId = y.TestActionId,
                      StartDate = y.StartDate
                  }).ToArray();
    return new TestDTO 
    { 
        TestId = x.Id, 
        Title = x.Title, 
        Actions = actions.Length == 0 ? null : actions
    };
}).ToList();

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

寻找使用glom获取嵌套数据的更好方法?

来自分类Dev

使用php从json中的嵌套数组获取数据

来自分类Dev

从嵌套数组中获取数据

来自分类Dev

无法获取嵌套数据中的密钥

来自分类Dev

从嵌套数组获取json数据

来自分类Dev

从本地JSON文件获取嵌套数据

来自分类Dev

如何从JSON AngularJS获取嵌套数据

来自分类Dev

如何从嵌套数组中获取数据

来自分类Dev

从 JSON 数组对象获取嵌套数据

来自分类Dev

如何从mongodb中获取嵌套数据

来自分类Dev

绑定嵌套数据

来自分类Dev

使用megaparsec正确解析嵌套数据

来自分类Dev

如何使用SparkR取消嵌套数据?

来自分类Dev

使用 Solr 索引嵌套数据

来自分类Dev

使用EF Code First,如何包括嵌套的嵌套数据

来自分类Dev

直接从AngulaJS中的嵌套数组获取数据

来自分类Dev

如何从Laravel上的快速加载中获取嵌套数据?

来自分类Dev

直接从AngulaJS中的嵌套数组获取数据

来自分类Dev

如何从嵌套数组中获取数据[Laravel]

来自分类Dev

Ionic 2 从嵌套数组中获取数据

来自分类Dev

如何通过php从嵌套数组中获取API数据

来自分类Dev

获取列表中嵌套数据框的摘要统计信息

来自分类Dev

AngularJS在嵌套数组中插入数据并使用特定的嵌套数组对象进行排序

来自分类Dev

嵌套数据类的字典

来自分类Dev

解析嵌套数组数据

来自分类Dev

MongoDB插入嵌套数据

来自分类Dev

Scss访问嵌套数据

来自分类Dev

Solr嵌套数据导入

来自分类Dev

访问JSON嵌套数据