LINQ Select в строке приводит к появлению символа

#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. Хорошо в теории, но я не уверен, что это может работать таким образом, есть идеи?