【问题标题】:How to convert select to linq without error of conversion?如何将select转换为linq而不会出现转换错误?
【发布时间】:2018-10-02 13:45:54
【问题描述】:

我想把下面的代码转换成LINQ

SELECT bpac.cmp FROM bpac
UNION
SELECT bpai.cmp FROM bpai
GROUP BY cmp
ORDER BY cmp DESC

我正在尝试获取第一个表,但出现错误:

List<string> listaBpac = modelOff.bpacs.Where(p => p.ibge == oUsuario.ibge)
                                 .Select(p => new { p.cmp })
                                 .ToList();

错误:

不能将类型'system.collections.generic.list "anonymous type: string cmp"'隐式转换为'system.collections.generic.list "anonymous type: string"'

【问题讨论】:

  • new { p.cmp } 初始化一个匿名类型,它有一个cmp 类型的string 属性。但是你想填写一个List&lt;string&gt;,所以你不需要那个匿名类型。因此,只需直接选择该属性p.cmp,无需匿名类型。
  • 您的 sql 效率低下,因为 UNION 已经删除了重复项(而不是 UNION ALL),您不需要 GROUP BY

标签: entity-framework linq


【解决方案1】:

试试;

List<string> listaBpac = modelOff.bpacs.Where(p => p.ibge == oUsuario.ibge)
                                    .Select(p => p.cmp)
                                    .ToList();

(如果你要返回一个字符串成员,你真的不需要“new”关键字)

【讨论】:

  • 类似的东西; List listpai = modelOff.bpai.Select(p => p.cmp).ToList().Union(listaBpac);
猜你喜欢
  • 2019-06-02
  • 2011-05-01
  • 1970-01-01
  • 2019-11-17
  • 2016-09-08
  • 2013-01-28
  • 1970-01-01
  • 2014-06-15
  • 2016-07-22
相关资源
最近更新 更多