【问题标题】:Is there a way of using orderby in a forloop C#?有没有办法在 for 循环 C# 中使用 orderby?
【发布时间】:2011-04-30 19:32:24
【问题描述】:

我有一个 for 循环,我想按名称的字母顺序排序

a
b
c
d

想知道如何做到这一点,想知道我是否可以在 forloop 中使用 linq orderby?

【问题讨论】:

  • 你到底想完成什么?
  • 那个循环?一个字符串循环?您想按名称订购这些字符串吗?如果是这样,只需执行 yourList.OrderBy();如果没有,请给我们更多信息。也欢迎代码。

标签: c# linq for-loop sql-order-by


【解决方案1】:

试试这个:

List<Item> myItems = new List<Item>();
//load myitems
foreach(Item i in myItems.OrderBy(t=>t.name))
{
 //Whatever
}

【讨论】:

  • 一个有点无聊的问题,orderby 会在循环的每次迭代中执行,从而导致性能下降吗?
  • 不,只有一次
  • 对于所有想知道为什么这不起作用的人:检查您是否包含了 using System.Linq; 行。
【解决方案2】:

foreach 需要一个IEnumerable&lt;T&gt; LINQ order-by 接受一个IEnumerable&lt;T&gt; 并给你一个排序的IEnumerable&lt;T&gt;。所以是的,它应该可以工作。

【讨论】:

    【解决方案3】:
    new string[] { "d", "c", "b", "a" }
        .OrderBy(s => s)
        .ToList()
        .ForEach(s => MessageBox.Show(s));
    

    【讨论】:

      【解决方案4】:

      您根本不需要循环。只需使用 LINQ:

      List<MyClass> aList = new List<MyClass>();
      
      // add data to aList
      
      aList.OrderBy(x=>x.MyStringProperty);
      

      【讨论】:

        猜你喜欢
        • 2023-03-04
        • 1970-01-01
        • 1970-01-01
        • 2023-03-27
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-01-06
        相关资源
        最近更新 更多