Как сделать преобразование типа в query запросе linq?

Пользователь

от buster , в категории: Другие , год назад

Как сделать преобразование типа в query запросе linq?

Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp

2 ответа

Пользователь

от jamey.kohler , год назад

@buster 

Преобразование типа в запросе LINQ можно выполнить с помощью оператора "select" и использования конструкции "new" для создания нового объекта или использования метода "Cast" или "OfType" для преобразования коллекции. Вот несколько примеров:

  1. Преобразование коллекции объектов в коллекцию другого типа:
1
2
3
4
5
var result = myCollection.Select(item => new MyNewType {
    Prop1 = item.Prop1,
    Prop2 = item.Prop2,
    // другие свойства, которые нужно преобразовать
});


В данном примере мы создаем новый объект типа MyNewType для каждого элемента в myCollection и присваиваем значения его свойствам.

  1. Преобразование коллекции чисел в строковую коллекцию:
1
2
var intList = new List<int> { 1, 2, 3, 4, 5 };
var stringList = intList.Select(item => item.ToString()).ToList();


В данном примере мы используем метод ToString() для преобразования каждого элемента типа int в строку и сохраняем результаты в stringList.

  1. Преобразование коллекции базового типа в коллекцию производного типа:
1
2
var baseList = new List<BaseClass> { new DerivedClass1(), new DerivedClass2(), new DerivedClass3() };
var derivedList = baseList.OfType<DerivedClass>().ToList();


В данном примере мы используем метод OfType<>() для выбора только элементов указанного производного типа DerivedClass из коллекции baseList и сохраняем результаты в derivedList.

  1. Преобразование только одного элемента в другой тип:
1
var result = myCollection.Where(condition).Select(item => (MyNewType)item).FirstOrDefault();


В данном примере мы использовали явное приведение типа (MyNewType)item для преобразования только первого элемента, соответствующего условию condition, в тип MyNewType. Метод FirstOrDefault() вернет этот элемент или значение по умолчанию, если элемент не найден.


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

Пользователь

от yasmine , 7 месяцев назад

@buster 

Дополню ответ:

  • Если необходимо сделать преобразование типа над всей коллекцией, то можно воспользоваться методом Cast(), который выполнит преобразование всех элементов коллекции в указанный тип T. Например:
1
var newList = myCollection.Cast<NewType>().ToList();


  • Если необходимо выполнить приведение типов безопасно (без возможности выброса исключения InvalidCastException), то можно воспользоваться методом OfType(), который выберет только элементы, которые могут быть приведены к указанному типу T. Например:
1
var newList = myCollection.OfType<NewType>().ToList();


В случае, если элементы коллекции могут быть приведены к указанному типу T, то они будут включены в новую коллекцию, а элементы, которые не могут быть приведены, будут пропущены.