当前位置: 首页 > 知识库问答 >
问题:

如何根据其中一个按字母顺序对4个单独的字符串数组(长度相同)进行排序?(在C#中)

张建华
2023-03-14

我已通过WMI读取远程PC上安装的程序。我已读取程序名称、程序发布器、程序安装。日期和程序安装。路径属性,并将每个属性存储在单独的字符串数组中。(相同长度的所有阵列:99)

我想按照节目名称的字母顺序列出节目信息。不把4个数组合并成一个多维数组,有可能做到吗?或者我应该先把数组合并成一个二维数组?如果是,怎么做?

由于我是C#的新手,如果您能提出建议,我将不胜感激。我读了很多条目,但我更困惑了。

    public string[] Programs_WMI_name = new string[99];
    public string[] Programs_WMI_publisher = new string[99];
    public string[] Programs_WMI_installdate = new string[99];
    public string[] Programs_WMI_installlocation = new string[99];

我已经试过了,但得到错误:

在我的公开课上

    public class TagService{
    public string Programs_WMI_Name { get; set; }
    public string Programs_WMI_Publisher { get; set; }
    public string Programs_WMI_Installdate { get; set; }
    public string Programs_WMI_Installlocation { get; set; }
    public List<string> programs = new List<string>(99);
    }

然后

    for (int i = 0; i < TagService.Programs_WMI_name.Length; i++)
            {
                programs.Add(new TagService
                {
                    Programs_WMI_Name = TagService.Programs_WMI_name[i],
                    Programs_WMI_Publisher = TagService.Programs_WMI_publisher[i],
                    Programs_WMI_Installdate = TagService.Programs_WMI_installdate[i],
                    Programs_WMI_Installlocation = TagService.Programs_WMI_installlocation[i],
                });
            }
            programs = programs.OrderBy(p => p.Programs_WMI_Name).ToList();
    

共有1个答案

彭雨华
2023-03-14

帮自己和他人一个忙,使用类

public class ProgramInfo
{
    public string Name { get; set; }
    public string Publisher { get; set; }
    public string InstallDate { get; set; }
    public string InstallLocation { get; set; }
}

从数组

var programs = new List<ProgramInfo>(Programs_WMI_name.Length);
for (int i = 0; i < Programs_WMI_name.Length; i++)
{
    programs.Add(new ProgramInfo
    {
            Name = Programs_WMI_name[i],
            Publisher = Programs_WMI_publisher[i],
            InstallDate = Programs_WMI_installdate[i],
            InstallLocation = Programs_WMI_installlocation[i],
    });
}

最好直接从查询中填充

var programs = new List<ProgramInfo>();
foreach (var row in new ManagementObjectSearcher(somequery).Get())
{
    programs.Add(new ProgramInfo
    {
        Name = row["name"],
        Publisher = row["publisher"],
        InstallDate = row["installdate"],
        InstallLocation = row["installlocation"],
    });
}

完整的示例可以如下所示

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

namespace Test
{
    public class ProgramInfo
    {
        public string Name { get; set; }
        public string Publisher { get; set; }
        public string InstallDate { get; set; }
        public string InstallLocation { get; set; }
    }

    public class TagService
    {
        public static List<ProgramInfo> Programs { get; } = new List<ProgramInfo>();

        public static void RefreshPrograms()
        {
            Programs.Clear();
            foreach (var row in new ManagementObjectSearcher(somequery).Get())
            {
                programs.Add(new ProgramInfo
                {
                    Name = row["name"],
                    Publisher = row["publisher"],
                    InstallDate = row["installdate"],
                    InstallLocation = row["installlocation"],
                });
            }
            Programs.Sort((l, r) => string.Compare(l.Name, r.Name));
        }
    }

    public Program
    {
        public static void Main()
        {
            TagService.ReadPrograms();
            var properties = typeof(ProgramInfo).GetProperties();
            Console.WriteLine(string.Join("|", properties.Select(p => p.Name.PaddRight(10))));
            foreach (var program in TagService.Programs)
            {
                Console.WriteLine(string.Join("|", properties.Select(p => ((string)p.GetValue(program)).PaddRight(10))));
            }
        }
    }
}
 类似资料:
  • 问题内容: 有没有一种简单的方法可以在Python中按字母顺序对字符串中的字母进行排序? 因此对于: 我想返回: 问题答案: 你可以做:

  • 问题内容: 我目前是python的新手,并陷入了这个问题,似乎找不到正确的答案。 问题:给出一个单词列表,按长度顺序(最长到最短)返回相同单词的列表,第二个排序标准应按字母顺序。提示:您需要考虑两个功能。 这是我到目前为止所拥有的: 它按长度排序,但我不知道如何将第二个标准应用于这种排序,即按字母顺序降序排列。 问题答案: 您可以按照以下两个步骤进行操作: Python的排序是稳定的,这意味着当长

  • 问题内容: 我想按字母顺序对JAVA中的字符串进行排序,如下所示:AaBbCcDdEeFfGg之后是大写字母和小写字母。例如,如果我把AbaC退还给我AabC,谢谢! 问题答案: 如果先将字符放入数组中,则可以使用进行此操作。(为了使用不区分大小写的自定义比较器,它必须是对象数组,而不是基元。)

  • 如果我有一个列表,并且我想不断地在其中添加行,并按姓氏的字母顺序对它们进行排序,那么如何才能做到这一点?“仅排序”似乎按字符串的第一个字母重新排列它们。

  • 问题内容: 我得到了一个数组(请参阅下面的数组中的一个对象),我需要使用JavaScript按名字排序。我该怎么做? 问题答案: 假设您有一个数组。您可以使用并传递一个接受两个参数并进行比较的函数(比较器) 它应该返回 如果第一个参数小于第二个参数,则为负数(应在结果数组的第二个参数之前放置) 如果第一个参数较大,则为正数(应放在第二个参数之后) 如果这两个元素相等,则为0。 在我们的情况下,如果

  • 问题内容: 我有多个数组,我想根据其中一个的排序顺序对所有数组进行排序,如下所示: 我希望函数执行后,数组将如下所示: 问题答案: 您可以执行以下操作:首先根据键控数组的索引的索引对它们进行索引的值对它们进行排序,然后使用: 如果要在任何类型的集合上使它通用(但仍以与std lib集合算法相同的样式返回数组): 以及带有自定义比较器的版本: