Интервал Linq для строкового представления

объединение оператора

это эквивалентно

FormsAuth = formsAUth == null ? new FormsAuthenticationWrapper() : formsAuth
48
задан ShuggyCoUk 4 August 2009 в 16:25
поделиться

4 ответа

Linq to Entities не поддерживает столько преобразований функций в sql, размещенный на сервере.

ToString (для чего угодно) - одна из них

Вот список поддерживаемых функций

Это уже задавалось ранее при переполнении стека, в частности , спрашивая, как преобразовать int в строку

33
ответ дан 26 November 2019 в 18:47
поделиться

Вот способ сделать это.

int[] x = new int[] {11,3,15,7,19};

var j = from s in x where s.ToString().StartsWith( "1") select s.ToString();

Console.WriteLine( j );
-1
ответ дан 26 November 2019 в 18:47
поделиться

У меня была похожая проблема

        IQueryable<Street> query = db.Streets.AsQueryable();
        query = query.Where(street => street.Name.ToLower().StartsWith(keyword))
                        .Take(10)
                        .OrderBy(street => street.Name);

        var list = query.Select(street => new
        {
            street.StreetId,
            Name = street.Name + " " + street.Suburb.Name + " " + street.Suburb.State.Name + " " + street.Suburb.Postcode

        });

Street.suburk.postCode был бросается «Невозможно преобразовать не примативную ошибку типа», как его int? После последующей ссылки Shuggy я зафиксировал, добавив .aseNumerable для силы int? -> Строконное преобразование «Клиентская сторона» I.E. LINQ к объектам. I.E.

var list = query.AsEnumerable().Select(street => new
        {
            street.StreetId,
            Name = street.Name + " " + street.Suburb.Name + " " + street.Suburb.State.Name + " " + street.Suburb.Postcode

        });
2
ответ дан 26 November 2019 в 18:47
поделиться

В EF v4 вы можете использовать SqlFunctions.StringConvert. Таким образом, ваш код будет выглядеть следующим образом:

from s in ctx.Services
where SqlFunctions.StringConvert((double)s.Code).StartsWith("1")
select s

EDIT

Как упоминает Рик в своем комментарии, причина приведения int к double (десятичная дробь, вероятно, тоже подходит) в том, что функция не имеет перегрузки для int.

55
ответ дан 26 November 2019 в 18:47
поделиться
Другие вопросы по тегам:

Похожие вопросы: