2014-09-26 3 views
0

Я новичок в LINQ Я получаю эту ошибкуНе может неявно преобразовать тип «System.Collections.Generic.List <AnonymousType # 1>» на «System.Collections.Generic.List

Не удается неявно преобразовать типа System.Collections.Generic.List<AnonymousType#1> в System.Collections.Generic.List<DirCert.Data.Model.DssClient_Sasid_Certified>

Я не могу понять, как решить эту ошибку.

Вот мой код:

public List<DssClient_Sasid_Certified> GetCertifiedRecordsbySasid(string Sasid) 
{ 
    return (from o in _context.DssClient_Sasid_Certified 
      where (o.SasId == Sasid) 
      join t in _context.DssClients on o.ClientId equals t.ClientId 
      select new 
      { 
       ClientId = o.ClientId, 
       SasId = o.SasId, 
       FormalLastName = o.FormalLastName, 
       FormalFirstName = o.FormalFirstName, 
       FormalMiddleName = o.FormalMiddleName, 
       BenefitSource = t.BenefitSource, 
       DOB = o.DOB 
      }).ToList(); 
} 
+0

Вы пытаетесь вернуть список анонимного типа из метода? Насколько я знаю, это запрещено. – undefined

+1

Не возвращайте анонимные типы из методов, кроме конкретных типов. Поэтому в этом случае было бы целесообразно создать класс 'DssClient' и вернуть« Список »или« IEnumerable ». –

+0

Вы возвращаете «Список », где T - это анонимный тип, который генерирует компилятор для вашего выбора, тогда как ваш метод ожидает «Список » –

ответ

3

Ваш выбор раздел:

select new 
{ 
    ... 
} 

выбирает анонимный тип. Вам нужно выбрать DssClient_Sasid_Certified, чтобы вы могли вернуть тип, о котором говорится в декларации вашего метода. Вы могут просто нужно изменить свой код:

select new DssClient_Sasid_Certified 
{ 
    ... 
} 

... если предположить DssClient_Sasid_Certified имеют все свойства вы настройку, конечно.

1

Ваш метод должен быть возвращающая список DssClient_Sasid_Certified, но ваш запрос LINQ создает тип Анон.

Вы могли бы сделать что-то вроде:

public List<DssClient_Sasid_Certified> GetCertifiedRecordsbySasid(string Sasid) 
{ 

    return (from o in _context.DssClient_Sasid_Certified 
      where (o.SasId == Sasid) 
      join t in _context.DssClients 
        on o.ClientId equals t.ClientId 
      select new DssClient_Sasid_Certified() 
      { 
       ClientId = o.ClientId, 
       SasId = o.SasId, 
       FormalLastName = o.FormalLastName, 
       FormalFirstName = o.FormalFirstName, 
       FormalMiddleName = o.FormalMiddleName, 
       BenefitSource = t.BenefitSource, 
       DOB = o.DOB 
      }).ToList(); 

} 

Это, конечно, предполагающей ваш объект имеет конструктор без параметров для DssClient_Sasid_Certified, и что свойства, которые вы используете в вашем объекте Анон такие же, как ваш DssClient_Sasid_Certified

строка из исходного запроса:

select new ..... 

в основном говорит, создать мне новый тип Anonymous, который анонимный тип не может быть автоматически преобразован в не анонимный тип (ваш список DssClient_Sasid_Certified).

Подробнее о типах Anonymous здесь: http://msdn.microsoft.com/en-us/library/bb397696.aspx

1

Сообщения об ошибке говорится, что clearly.Your возвращает тип List<DssClient_Sasid_Certified> но вы пытаетесь вернуть список анонимного types.So типов делать не матча, они не совместимы. Вам нужно создать экземпляры вашего типа вместо анонимных типов:

select new DssClient_Sasid_Certified { .. } 
Смежные вопросы

 Смежные вопросы