【问题标题】:Sorting a List of Strings as Integers in LINQ C# [duplicate]在LINQ C#中将字符串列表排序为整数[重复]
【发布时间】:2016-06-21 00:51:00
【问题描述】:

我有一个按 UniqueId 列排序的对象列表 (RunSummary),然后是 RunNo 列。但是UniquId 对象的类型是String。我想将 UniqueId 排序为 Integer 对象(不是 1,10,11,3 而是 1,3,10,11)。这是我的代码:

public List<RunSummary> GetRunSummariesForUniqueIds(List<String> uniqueIds)
{
    using (var context = new ELSORegistryEntities())
    {
        context.Configuration.ProxyCreationEnabled = false;

        List<RunSummary> runSummaries = context.RunSummaries
            .Where(param => uniqueIds.Contains(param.UniqueId))
            .OrderBy(param => param.UniqueId)
            .ThenBy(param => param.RunNo)
            .ToList<RunSummary>);              

        return runSummaries;
    }
}        

我试过了

List<RunSummary> runSummaries = context.RunSummaries
    .Where(param => uniqueIds.Contains(param.UniqueId))
    .OrderBy(param => Convert.ToInt32(param.UniqueId))
    .ThenBy(param => param.RunNo)
    .ToList<RunSummary>();

但它不起作用。如何在 LINQ 中排序?

【问题讨论】:

  • 具体是什么不起作用?你有例外吗?或者,如果您得到不正确的结果,它们是什么?
  • @juharr 我不认为你可以在 DBContext 查询中使用像 int.Parse(param.UniqueId) 这样的函数?
  • 我猜,你不能在 LINQ 查询到 DB 中使用 Convert.ToInt32,但是给我们一个问题的答案..
  • 我不能同意这个话题的结束。 “选定”帖子上的给定答案不是正确答案。它有效,但不正确。

标签: c# linq sorting entity-framework-6


【解决方案1】:

您不能在查询中使用 Convert.ToInt32,您应该在查询后排序

List<RunSummary> runSummaries = context.RunSummaries.Where(param => uniqueIds.
Contains(param.UniqueId)).ToList<RunSummary>()
.OrderBy(param => Convert.ToInt32(param.UniqueId))
.ThenBy(param => param.RunNo).ToList();

【讨论】:

  • 谢谢。不幸的是,我得到了一个 FormatException:“输入字符串的格式不正确。”
猜你喜欢
  • 1970-01-01
  • 2012-05-08
  • 2021-04-05
  • 2021-07-26
  • 1970-01-01
  • 2014-04-21
  • 2017-05-04
  • 2015-03-14
  • 2016-10-03
相关资源
最近更新 更多