Хорошо, вот предположение. Я просто набрал это в LinqPad:
From x in Enumerable.Empty(Of String)().AsQueryable()
Select x + " " + x
И получил это как эквивалентное дерево выражений (извините, LinqPad покажет этот C # -y):
System.String[]
.Select (x => String.Concat (x, " ", x))
Тогда я набрал это:
From x in Enumerable.Empty(Of String)().AsQueryable()
Select x + " " + x
И дерево выражения стало:
System.String[]
.Select (x => String.Concat (new String[] { x, " ", x, " ", x } ))
Я предполагаю, что это как-то связано с тем, что Concat
имеет перегрузки для максимум четырех параметров, а затем возникает перегрузка, которая принимает массив параметров. Может быть, поставщик LINQ не поддерживает этот последний.
РЕДАКТИРОВАТЬ: Согласно этот ответ LINQ для сущностей в настоящее время не поддерживает string.Concat
с чем-то, кроме строк.