Используйте здравый смысл действительно. Если у Вас есть что-то как:
public class ScreenCoord2D{
public int x;
public int y;
}
Тогда существует мало точки в оборачивании их в методах get и методах set. Вы никогда не собираетесь хранить x, y координата в целых пикселях любой другой путь. Методы get и методы set только замедлят Вас.
, С другой стороны, с:
public class BankAccount{
public int balance;
}
Вы могли бы хотеть изменить способ, которым баланс вычисляется в какой-то момент в будущем. Это должно действительно использовать методов get и методы set.
всегда предпочтительно знать , почему Вы применяете хорошую практику, так, чтобы Вы знали, когда нормально изгибать правила.
List<B> listB = listA.Select(a => new B()
{
Count = a.TotalCount,
Title = a.Title
}).ToList();
Действует так же, как решение eduncan, но с другим синтаксисом. Выбирайте ..
var list =
from a in TableA
select new B {
Count = a.TotalCount,
Title = a.Title
};
Вы создаете новый экземпляр B в предложении select и назначаете свойства с помощью встроенной функции назначения свойств в 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. Это довольно удобно и эффективно.
Хм, из моей головы (так что, вероятно, будут ошибки!):
List = from a в listOfA выберите новый B (a.count, a. title);
может помочь.