【问题标题】:Alphabetizing a random char list in C#在 C# 中按字母顺序排列随机字符列表
【发布时间】:2013-10-18 18:11:58
【问题描述】:

我想我做错了,我试图生成一个包含 30 个随机字符的列表。然后用 LINQ 升序对它们进行排序。但是,我在 LINQ 排序中的字母变量下得到了一条红色的曲线

namespace LetterSort
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
        //create random list
        List<char> random = new List<char>();
        Random r = new Random();

        public void Form1_Load(object sender, EventArgs e)
        {
            char letters;


            //insert random letters           
            for (int i = 0; i < 30; i++)
            {
                random.Add((char)i);
                letters = (char)((int)'a' + r.Next(0, 26));
                listBox1.Items.Add("Random Letters:" + letters);
            }

            //in ascending
                var asc =
                    from a in letters //error here
                    orderby a ascending
                    select a;

        }

    }
}

【问题讨论】:

  • 红色波浪线表示什么?

标签: c# linq list char alphabetized


【解决方案1】:

random 不是letters

var asc = from a in random
          orderby a
          select a;

您可以像这样使用更多的 LINQ 解决方案:

random = Enumerable.Range(0,30)
                   .Select(a=>(char)r.Next(97,123)).ToList();

//then assign the DataSource of your listBox1 instead of adding each item:
listBox1.Format += (s,e) => {
  e.Value = "Random Letters: " + e.Value;
};
listBox1.DataSource = random;

//in ascending order
var asc = random.OrderBy(a=>a);

【讨论】:

  • 可爱的 Linq 很好用
【解决方案2】:
var asc = from a in random
orderby a ascending
select a;

【讨论】:

    【解决方案3】:

    您遇到的错误是因为您需要在查询中使用List&lt;char&gt; 进行订购,并且您将其传递给单个字符letters

    var asc =
            from a in random//changehere
            orderby a ascending
            select a;
    

    这确实为使用正确的变量名提供了一个很好的例子。您可以命名您的 lettersletter ,因为它代表单个字符。

    另外,您并没有在列表中添加随机字符,而是在将i 转换为字符后添加。更改您的代码,例如:

     for (int i = 0; i < 30; i++)
        {
            letters = (char)((int)'a' + r.Next(0, 26));
            random.Add(letters);
            listBox1.Items.Add("Random Letters:" + letters);
        }
    

    【讨论】:

    • 非常感谢!这解决了它!
    猜你喜欢
    • 2022-11-18
    • 2020-03-29
    • 1970-01-01
    • 1970-01-01
    • 2018-10-12
    • 2017-05-19
    • 2018-07-07
    • 1970-01-01
    • 2013-05-14
    相关资源
    最近更新 更多