实体框架:如何使用多边形类型进行嵌套的“选择不同的..何处”

问题描述

我们在EF中有以下情况/查询

    return await dbcontext.TopografischePercelen
            .AsQueryable()
            .Where(p => p.PeriodeId == 43)
            .Select(t => new
            {
                t.Id,// polygon array  
                Omtrek =
                    t.Gewaspercelen.SelectMany(gp => gp.OverlappendeReferentiepercelen)
                    .Select(r => r.Referentieperceel.GeoData.RDNewGeo)
                    .distinct()  // <-- cannot use this with polygon type
                    .ToArray(),// other data
            })
            .ToListAsync();

但这不起作用。我给出了运行时错误

由于无法比较,因此无法将几何数据类型选择为disTINCT。

它应返回TopografischPerceel个实体的数组,每个实体都有一个属性Omtrek,其中包含一个“多边形数组”,该多边形基于由几条Gewasperceel子记录引用的多边形TopografischPerceel的记录:

关系:

TopografischePerceel
\-* Gewasperceel
    \-* Referentieperceel (has one polygon)

有什么办法可以使它工作?

样本数据:

 Topo1
|- gewasperc1
|  \- refperc1
\- gewasperc2
   \- refperc1
Topo2
|- gewasperc3
|  \- refperc2
\- gewasperc4
   \- refperc3

应该导致

Topo1
|- Id = 1
\- omtrek = [refperc1-geo]
Topo2
|- Id = 2
\- omtrek = [refperc2-geo,refperc3-geo]

但是当我不使用“ distinct”时,查询将运行,但返回:

Topo1
|- Id = 1
\- omtrek = [refperc1-geo,refperc1-geo]
Topo2
|- Id = 2
\- omtrek = [refperc2-geo,refperc3-geo]

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)