var list =
from a in TableA
select new B {
Count = a.TotalCount,
Title = a.Title
};
Вы новый экземпляр B в своем предложении select и назначаете свойства с помощью функции присвоения свойств inline в C# 3.0.
Преимущества сопоставления его встроенной строки - это отсроченное выполнение оператора Linq. Linq отобразит измененный оператор и выполнит его из вашего IQueryable. Например:
public class ClassA
{
public int TotalCount;
public string Title;
}
public class ClassB
{
public int Count;
public string Title;
}
public IQueryable<ClassB> FetchAllOfClassB()
{
var list =
from a in TableOfClassA
select new ClassB {
Count = a.TotalCount,
Title = a.Title
};
return list.AsQueryable();
}
Технически AsQueryable()
является немного излишним. Иногда я использую его, чтобы понять, что это абсолютно необходимо. Тем не менее, сам объект списка является IQueryable классаB.
Затем вы можете позвонить в FetchAllOfClassB()
далее по цепочке и использовать IQuerable. Это довольно гладкий и эффективный.
Ваш вопрос непонятен ... Какая связь между А и В? –
По существу они представляют одно и то же. В моем фактическом случае A - это класс, сгенерированный Linq to Sql, когда я создал класс Linq to Sql и добавил к нему таблицу. Поскольку класс A имеет зависимости Linq и Linq к Sql, я не хочу раскрывать его в своих приложениях, поэтому я создаю класс B, который не имеет зависимостей. Поэтому мне нужно заполнить список экземпляров класса B из списка экземпляров класса A. – Jeremy