Создание оператора Linq для создания объектов - PullRequest
3 голосов
/ 28 января 2010

Если я создал оператор Linq, как показано ниже, он работает нормально.

var Jobs = from a in ctx.MyExport
           select new
           {
               FileName = a.FilePath,
               JobId = a.ID,
           };

Если я хочу использовать класс, а не анонимный тип, я получаю следующую ошибку «Невозможно преобразовать лямбда-выражение в тип« строка », потому что это не тип делегата».

Вот код, с которым я хочу работать:

var Jobs = from a in ctx.MyExport
           select new MyClass
           {
               FileName = a.FilePath,
               JobId = a.ID,
           };

А вот и класс:

public class MyClass
{
    public string FileName { get; set; }
    public Guid JobId { get; set; }
}

Может кто-нибудь сказать мне, что я делаю неправильно и как это исправить?

1 Ответ

1 голос
/ 01 февраля 2010

Код выше верный, вы получаете сообщение об ошибке из-за кода, который вы нам не показали.

Вы пытаетесь присвоить нематериализованный запрос строковой переменной, что приведет к ошибке. Изменение типа на IEnumerable немедленно материализует запрос, независимо от того, используете ли вы его или нет, он будет извлечен из базы данных. Так что решение не рекомендуется.

Ответ будет состоять в том, чтобы материализовать запрос перед использованием, я предполагаю, что вы делаете foreach для этой коллекции, поэтому Jobs.AsEnumerable () или Jobs.ToList () (в зависимости от того, что вы хотите с ним делать) - это то, что вы должны делать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...