#linq #select
#linq #выберите
Вопрос:
У меня есть массив объектов, с которыми я использую LINQ для создания объекта для веб-сервиса, проблема, с которой я сталкиваюсь, заключается в том, что там, где некоторые данные необходимо обрезать до одного из выбранных значений, параметр select использует символ вместо строки:
WebService.ORDER_WRITE_REQUEST WebServiceObject = new WebService.ORDER_WRITE_REQUEST();
WebServiceObject.ITEMS = array.Item
.Select(x => new WebService.ITEMS
{
Value1 = x.Units.UnitName.Where(x => x != null).Select(x => x.Length > 5 ? x.Substring(0, 5) : w);
}
Значение ‘UnitName’ является строкой, но параметр x в конечном итоге преобразует его в символ, поэтому я фактически не могу использовать метод substring в запросе linq.
Я вижу, что select ожидает, что это будет символ, но я уверен, что я делал это раньше без проблем. У кого-нибудь есть идеи, как это решить?
Спасибо.
Ответ №1:
UnitName
это строка, которая реализует IEnumerable<char>
, вы перечисляете все символы.
Вы хотите, чтобы это:
...
Value1 = x.Units
.Where(x => x.UnitName != null)
.Select(x => x.UnitName.Length > 5 ? x.UnitName.Substring(0, 5) : w);
...
Комментарии:
1. Спасибо, Тим, но есть проблема с тем, что где x как параметры where select придают новое значение x в Значении1. Хорошо в теории, но я не уверен, что это может работать таким образом, есть идеи?