【问题标题】:EF using Wrong String.ConcatEF 使用错误的 String.Concat
【发布时间】:2013-09-18 14:44:06
【问题描述】:

我在这里看到很多关于 String.Concat 使用失败的帖子; EF 文档说它确实支持 concat,但只支持以下三个重载:

System.String Concat(String str0, String str1)
System.String Concat(String str0, String str1, String str2)
System.String Concat(String str0, String str1, String str2, String str03)

我遇到的问题是 VB LINQ 默认使用

System.String Concat(ParamArray values As String()) 

默认情况下重载,所以我得到一个错误。有没有办法在 VB 的 EF 查询中强制我想要哪个重载?我使用的查询如下:

from x in table
group join y ...
.
.
select New With { .Text = String.Concat(SqlFunctions.Convert(x.ID), " - ", if (y is null, "", y.Name)) }

即使使用以下选项:

select New With { .Text = String.Concat(SqlFunctions.Convert(x.ID), " - ", "TEST NAME") }

也失败了,因为它使用了数组重载,而不是参数重载。有没有办法让它工作?

【问题讨论】:

  • 它通常由参数决定,不知道为什么它被强制使用开放参数数组一。
  • 如果我也使用 String.Concat("A", "B", "C") 它也会失败,说它使用了 paramarray 版本,即使 VS 设计器显示了上面列出的带有 3 个字符串参数的版本......

标签: .net vb.net string linq entity-framework


【解决方案1】:

你可以尝试使用命名参数

select New With { .Text = String.Concat(str0:=SqlFunctions.Convert(x.ID), str1:=" - ", str2:="TEST NAME") }

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-01-19
    • 1970-01-01
    • 1970-01-01
    • 2011-08-21
    • 2012-12-15
    • 1970-01-01
    • 2020-03-08
    • 2013-09-13
    相关资源
    最近更新 更多