Преобразование списка <Entity1> в другой список <Entity2> - PullRequest
1 голос
/ 14 мая 2011

Я бы хотел сыграть что-то вроде этого:

// Entity Data and Entity A_Data has exactly the same properties: sName and sZip.
List<Data> ListData = new List<Data>();
List<A_Data> ListA_Data = (A_Data)ListData.FindAll(item => item.sName.StartsWith("A"));

VS2010 постоянно говорит мне, что я не могу сделать этот бросок. Любая помощь будет оценена.

Ответы [ 2 ]

3 голосов
/ 14 мая 2011

Используйте метод расширения Cast<T>:

List<A_Data> ListA_Data = ListData.FindAll(item => item.sName.StartsWith("A")).Cast<A_Data>().ToList();

Это не работает так, как у вас сейчас, потому что вы пытаетесь привести IQueryable<Data> к A_Data.

2 голосов
/ 14 мая 2011

Если класс явно не объявлен как производный от другого приведения, вы не можете примерить между ними. Даже если они имеют одинаковые свойства или поля.

class Data  { public string Name { get; set; } public string Zip { get; set; } }
class AData { public string Name { get; set; } public string Zip { get; set; } }

Data  data  = new Data { Name = "Foo", Zip = "Bar" };
AData adata = (AData)data;  // doesn't work

В этом случае вам нужен метод конвертации:

AData ToAData(Data data)
{
    return new AData { Name = data.Name, Zip = data.Zip };
}

Не уверен, что в EF4 есть что-то, что поможет с этим.

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