Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/324.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/google-cloud-platform/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 将信息排序到输出列表_C# - Fatal编程技术网

C# 将信息排序到输出列表

C# 将信息排序到输出列表,c#,C#,我是编程新手,我想从一些简单但对我和我女朋友有用的东西开始会很好 我想创建一个购物清单程序,它将把我输入的物品放入文本框,然后根据定义的组对它们进行排序。然后将这些信息输出到一个易于阅读的列表中,该列表已经分类,便于购物 我的问题是,;如何对放入富文本框的信息进行排序?我有两个丰富的文本框,我想把信息输入其中一个,然后输出到另一个,但有我的喜好排序 提前感谢您。:-) 好的,如果您的第一个RichTextBox中的每一项都用已知的东西隔开(例如换行符),那么它应该是这样的: var list =

我是编程新手,我想从一些简单但对我和我女朋友有用的东西开始会很好

我想创建一个购物清单程序,它将把我输入的物品放入文本框,然后根据定义的组对它们进行排序。然后将这些信息输出到一个易于阅读的列表中,该列表已经分类,便于购物

我的问题是,;如何对放入富文本框的信息进行排序?我有两个丰富的文本框,我想把信息输入其中一个,然后输出到另一个,但有我的喜好排序


提前感谢您。:-)

好的,如果您的第一个
RichTextBox
中的每一项都用已知的东西隔开(例如
换行符
),那么它应该是这样的:

var list = richTextBox1.Text
    .Split(new[] { Environment.NewLine },
        StringSplitOptions.RemoveEmptyEntries)
    .Sort();
richTextBox2.Text = string.Join(Environment.NewLine, list.ToArray());

这将利用类型的默认排序算法。在这种情况下,
字符串
。因此,它将按字母顺序对它们进行排序。

既然您想对它们进行分组,我建议创建一个小型的
杂货店项目,如下所示:

class  GroceryItem 
{
    GroceryItem(string category, string name) {
        Category = category;
        ItemName = name;
    }

    public string Category {get;set;}
    public string ItemName {get;set;}
}
然后,您可以轻松地从第一个文本框解析项目。让我们假设它们看起来像这样:

class  GroceryItem 
{
    GroceryItem(string category, string name) {
        Category = category;
        ItemName = name;
    }

    public string Category {get;set;}
    public string ItemName {get;set;}
}
蔬菜、西红柿
肉、羊肉
蔬菜、土豆
肉、鸡肉

只需将它们全部阅读,在
上拆分,
为每个部分获取两个部分,然后创建一个新的
杂货店项目

List<CategoryItem> shoppingList = new List<CategoryItem>();
foreach (var line in your_lines_collection)
{
    var parts = some_line.Split(',');
    shoppingList.Add(new GroceryITem(parts[0],parts[1]));
}
这将输出:

[meat] :
    meat ,  chicken
    meat ,  veal
[veg] :
    veg ,  pot
    veg ,  tom
然后,您可以在另一个文本框中打印此内容,或者按照您的意愿使用它:)


根据评论,以下是控制台的全部代码,只需将其粘贴到visual studio中,就可以了:

using System;
using System.Collections.Generic;
using System.Linq;

internal class Program
{
    public static void Main(string[] args)
    {
        List<GroceryItem> shoppingList = new List<GroceryItem>();

        List<string> groceries = new List<string>() { "veg, pot", "veg, tom", "meat, chicken", "meat, veal" };
        foreach (var line in groceries)
        {
            var parts = line.Split(',');
            shoppingList.Add(new GroceryItem(parts[0], parts[1]));
        }

        var sorted_list_by_ItemName =
            from item in shoppingList
            orderby item.ItemName
            group item by item.Category into groups
            select groups;


        foreach (var gr in sorted_list_by_ItemName)
        {
            Console.Out.WriteLine("[{0}] :", gr.Key);
            foreach (var it in gr)
                Console.Out.WriteLine("    {0}", it);
        }

        Console.ReadKey();
    }

    public class GroceryItem
    {
        public GroceryItem(string category, string name)
        {
            Category = category;
            ItemName = name;
        }

        public string Category { get; set; }
        public string ItemName { get; set; }

        public override string ToString()
        {
            return Category + " , " + ItemName;
        }
    }

}
使用系统;
使用System.Collections.Generic;
使用System.Linq;
内部课程计划
{
公共静态void Main(字符串[]args)
{
List shoppingList=新列表();
列出食品=新列表(){“蔬菜,锅”,“蔬菜,汤姆”,“肉,鸡肉”,“肉,小牛肉”};
foreach(食品杂货中的var行)
{
var parts=line.Split(',');
添加(新杂货店项目(零件[0],零件[1]);
}
按项目名称排序的变量列表=
来自shoppingList中的项目
orderby item.ItemName
按项目分组。按组分类
选择小组;
foreach(按项目名称排序的列表中的变量gr)
{
Console.Out.WriteLine(“[{0}]:”,gr.Key);
foreach(在gr中对其进行var)
Console.Out.WriteLine(“{0}”,it);
}
Console.ReadKey();
}
公营食品杂货店
{
公共杂货项目(字符串类别、字符串名称)
{
类别=类别;
ItemName=名称;
}
公共字符串类别{get;set;}
公共字符串ItemName{get;set;}
公共重写字符串ToString()
{
退货类别+“,”+项目名称;
}
}
}

为了避免正在进行的乒乓球比赛,如果你还有其他问题,只要打开一个新的问题(如果相关的话)。否则,如果回答了您的问题,您可以向上投票、向下投票,并将其标记为已回答。:)

谢谢你的回答。我想我的编程水平还是太低了,即使是这个,我喜欢你这样说,这正是我想要的。阅读它,这对我来说是有意义的,然而,在尝试将它放入VS2012之后,它只会给我错误。也许。。。但是1。你需要从某个地方开始。2.这是编译和工作,所以你可以玩它,并从中学习。3.这是我们学习的唯一方法,看看我们还不知道的东西:)是的,你是对的:-)我在示例中看到你有“console.out.writeline”,那么对于这一点,我应该将项目作为“console application”还是“winformapp”?在控制台应用程序中,我将其放入“静态void Main(string[]args)”中,对吗?或者我完全不在…?你可以用任何一个。你也可以创建一个字符串,而不是执行console.out(
string s=something
),即使stringbuilder会更好,然后将该字符串分配给你的另一个文本框。好吧,我想我问的是,我应该把这个代码放在哪里编译出来,这样我就可以玩它了?我是将其全部放在大括号内的“staticvoidmain”之后,还是放在名称空间之前?如果我把它放在大括号里,我会犯很多错误……嗯,你能检查一下我的截图吗?