【问题标题】:Problem after sorting a IEnumerable with LINQ in C# [duplicate]在 C# 中使用 LINQ 对 IEnumerable 进行排序后出现问题 [重复]
【发布时间】:2019-08-02 19:35:01
【问题描述】:

我需要对项目列表(IEnumerable)进行排序。使用 Linq 排序后,我无法使用 foreach 扫描元素。

代码如下:

const string VERIFICATION_CODE = "where doc.deviceId = \"{0}\" and doc.params =\"\"";

var content = string.Format(VERIFICATION_CODE, dto.DeviceIdorId);

var items = await 
DocumentDBRepository<CosmosDBEvents>.GetItemsAsync(content);

if (items == null || items.Count() == 0)
{
   return null;
}

items = from item in items
        orderby item.descrizione_evento.Severity ascending,item.ts descending
        select item;

MessagesController messageController = new MessagesController(_context);
EventsTypeDescriptionsController eventController = new EventsTypeDescriptionsController(_context);

int codice_evento;
string cultura;

foreach (var item in items)
{
    codice_evento = Convert.ToInt32(item.eventId);
    cultura = GetCulture();
    item.decodifica_evento = messageController.GetMessageWithCulture(codice_evento, cultura);
    ParserDescrizione(item);
    item.descrizione_evento = eventController.GetDetail(codice_evento);
}

return items;

当我尝试执行 foreach 时,出现以下错误:

“对象引用未设置为对象的实例。”

但如果我进行快速观察,该集合似乎已填充。

谁能帮帮我。

【问题讨论】:

  • 呸,这看起来很可怕,很容易受到 sql 注入攻击。
  • “它不允许我这样做”是什么意思?你能发布你得到的异常的确切文本吗?您是遇到异常还是只是没有按您的预期工作?

标签: c# linq sorting casting


【解决方案1】:

可能是其中之一

item.descrizione_evento.Severity

崩溃。使用

item.descrizione_evento?.Severity

相反。

【讨论】:

  • 非常感谢。你解决了我的问题!!!!!!!!!!!!
猜你喜欢
  • 1970-01-01
  • 2012-01-28
  • 1970-01-01
  • 1970-01-01
  • 2015-10-05
  • 1970-01-01
  • 1970-01-01
  • 2014-10-14
  • 1970-01-01
相关资源
最近更新 更多