使用 LINQ 对字符串数组进行排序

2023-11-27

我有一个字符串数组声明如下

string[][] data = new string[3][];
string[] name = new string[10];
string[] contact = new string[10];
string[] address = new string[10];

当我填写姓名、地址和联系人数据后,某些数据中的地址可能是空字符串。之后我将其分配给字符串数组数据。

data[0] = name;
data[1] = contact;
data[2] = address

如何使用 LINQ 按名称对字符串数组进行排序。我尝试 数据 = data.orderby(y => y[0]).ToArray();

但这种排序会改变字符串数组的顺序。假设data[0]是商店名称,但排序后它变成商店地址。
有人知道如何对记录进行排序吗?请帮忙


您可以使用它对名称数组进行排序(存储在data[0]):

data[0] = data[0].OrderBy(x => x).ToArray();

但是,这将导致存储在其他数组中的数据失去与名称数组的任何有意义的相关性(例如name[3]最有可能不匹配contact[3])。为了避免这种情况, 我强烈建议使用一个类来存储这些信息:

class MyClass // TODO: come up with a better name
{
    public string Name { get; set; }
    public string Contact { get; set; }
    public string Address { get; set; }
}

要声明数组,请使用:

MyClass[] data = new MyClass[10];
data[0] = new MyClass   // Populate first record
{
    Name = "...",
    Contact = "...",
    Address = "...",
};

并对数组进行排序:

data = data.OrderBy(x => x.Name).ToArray();

Or this:

Array.Sort(data, (x, y) => x.Name.CompareTo(y.Name));

第二个选项更有效,因为它重新排列元素,并且不需要分配新数组来存储结果。

或者,使用List<T>:

List<MyClass> data = new List<MyClass>(10);
data.Add(new MyClass   // Populate first record
{
    Name = "...",
    Contact = "...",
    Address = "...",
});

并对列表进行排序:

data.Sort((x, y) => x.Name.CompareTo(y.Name));

这将具有与Array.Sort但是,如果您需要能够动态添加或删除列表中的元素,那么这是一个更好的选择。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 LINQ 对字符串数组进行排序 的相关文章

  • JQuery、ASCX 和 webmethods 似乎不起作用

    我有一个级联下拉列表 其中 3 个 类型 类别和子类别 首先类型负载 然后选择类型 类别负载以及选择类别 子类别负载 我还有 2 个按钮 添加类别 和 添加子类别 单击这些按钮后 我调用 JQuery 模态表单来添加它们 我在代码后面使用
  • 不同翻译单元中字符串文字的内存地址是否相同?

    假设我们有以下 cpp 文件 include
  • 忽略父进程中的信号

    我正在尝试实现一个 shell 程序 我希望 shell 程序忽略 SIG INT ctrl c 但在我的程序中 子进程也会忽略 SIG INT 信号 但它不应该这样做 因为 exec 应该将子进程带到另一个程序 并且该程序默认情况下应该处
  • 使用 R.Net 版本 1.5.5 创建 REngine 实例

    我正在尝试创建一个 Hello World 示例R Language using R Net版本1 5 5 从 NuGet 加载 不幸的是 我见过的在线示例都不起作用 这就是我所做的 已安装Microsoft R Open 3 2 4 增强
  • std::string substr 方法问题

    你好 我正在写这个方法 我希望它从给定缓冲区中提取给定位置的一部分 我有一个像这样的字符串something one something two我想要得到 一个 这是我的想法 static std string Utils getHeade
  • FxCop 和 GAC 疯狂

    当我尝试分析依赖于模式和实践 企业库数据 以及其他 2 0 0 0 的项目时使用 FxCop FxCop 抱怨它不能 定位程序集引用 即使正在分析的应用程序 dll 是根据其编译的此版本及其在 GAC 中 如果我浏览到 GAC 尝试选择相同
  • 不使用 DAO 压缩 Microsoft Access 数据库

    我用CDatabase类开一个ACCDB访问数据库 司机是 T Microsoft Access Driver mdb accdb 我可以打开并使用数据库 已经这样做很多年了 if DatabaseExist m strMDBPath AJ
  • ASP.NET MVC 中是否有嵌套母版页?

    我想知道 MVC 框架是否可以利用嵌套母版页 如果是这样 有人有一些关于如何实现这一目标的信息吗 我们经常使用嵌套母版页 以便将布局与标准包含和站点范围标记分开 如下所示 站长
  • Makefile:如何正确包含头文件及其目录?

    我有以下 makefile CC g INC DIR StdCUtil CFLAGS c Wall I INC DIR DEPS split h all Lock o DBC o Trace o o cpp DEPS CC o lt CFL
  • 安全移动 C++ 对象

    我听到过一些警告 不要通过以下方式将对象运送到另一个内存位置memcpy 但不知道具体原因 除非它包含的成员做了依赖于内存位置的棘手事情 否则这应该是完全安全的 或者不是 编辑 预期的用例是像这样的数据结构vector 它存储对象 不是po
  • autofac 中的条件组件注册

    是否可以根据其他组件的状态有条件地注册组件 就像是 ContainerBuilder RegisterConditionally
  • 使用 itextSharp 5.3.3 对 Pdf 文档进行数字签名和验证

    我正在尝试使用 iTextSharp 5 3 3 在服务器 c 上进行数字签名和验证 pdf 文档 我使用 DigiSign 在线工具 生成了 Pfx 文件 然后使用 Windows 生成证书 cer 文件
  • ASP Net Core 属性路由和双正斜杠

    正如所指出的here https stackoverflow com a 20524044 3129340 URL 中包含双斜杠是有效的 我有一个使用属性路由的 ASP Net Core 项目 一个名为GroupController用于处理
  • 在另一个类中使用一个类对象?

    我正在用 c 制作应用程序 在该应用程序中 我有一个类DataCapture cs 在同一个应用程序中 我有另一个类Listner cs 在 Listner cs 类中 我想使用以下对象DataCapture cs不创建新对象DataCap
  • 在运行时生成可执行文件

    好吧 所以我想知道如何创建一个程序 该程序创建第二个程序 就像大多数压缩程序如何创建自解压自可执行文件一样 但这不是我需要的 假设我有 2 个程序 每个都包含一个类 我将使用一个程序来修改类并用数据填充类 第二个文件将是一个也具有该类的程序
  • 以编程方式将 UserControl 从 ContentControl 移动到另一个 ContentControl

    在 WPF 应用程序中 我想在代码中将 UserControl 从 ContentControl 移动到另一个控件 myContentControl2 Content myUserControl 在这种情况下我得到一个错误 指定的元素已经是
  • 如何通过反射获取透明代理的属性值?

    我的代码接收透明代理而不是原始实例 虽然这var type obj GetType 产生原始类的类型 下面的代码抛出TargetException 对象与目标类型不匹配 var value property GetValue obj nul
  • 删除指针后将其设为 NULL 是一个好习惯吗?

    我首先要说的是 使用智能指针 您将永远不必担心这个问题 下面的代码有什么问题 Foo p new Foo use p delete p p NULL 这是由答案和评论 https stackoverflow com questions 19
  • C# p/Invoke 如何使用 DirectX 游戏的 SendInput 模拟 keyPRESS 事件

    我经常为各种机器人或其他 GUI 自动化程序模拟键盘按下事件而苦苦挣扎 我已经成功地使用以下方法模拟按键事件 INPUT kInput new INPUT 1 kInput j type SendInputEventType InputKe
  • 布尔实现的atomicCAS

    我想弄清楚是否存在错误答案 https stackoverflow com a 57444538 11248508 现已删除 关于Cuda like的实现atomicCAS for bool是 答案中的代码 重新格式化 static inl

随机推荐

  • Jade 模板,包含中的变量范围

    我正在使用 Jade 没有 Express 仅用于静态 HTML 模板 我将其理解为能够创建部分 意味着范围不是问题 但情况似乎并非如此 我找不到对此使用的任何参考 案件 玉大师 5 html block vars var slug hom
  • 如何在 PHP 中发出 HTTP 请求而不等待响应

    PHP 中有没有办法进行 HTTP 调用而不等待响应 我不在乎回应 我只想做类似的事情file get contents 但在执行其余代码之前不等待请求完成 这对于在我的应用程序中引发某种 事件 或触发长进程非常有用 有任何想法吗 我之前接
  • 如何按行长度排序,然后按字母顺序反转

    我有一大堆 600 多个 搜索和替换术语 我需要将它们作为 sed 脚本在某些文件上运行 问题是搜索项不是正交的 但我认为我可以通过按行长度排序来摆脱它 即首先拉出最长的匹配项 然后按每个长度内的字母顺序排列 所以给定一组未排序的 aaba
  • glibcxx STL 在 std::valarray::sum() 的实现中是否不正确?

    我正在玩弄valarrays当我遇到某些问题时 我认为编译器的 STL 实现中存在错误 这是我可以制作的最小示例 include
  • REST 可以通过 FTP 实现吗?

    我和我的同事不同意 REST 可以通过 FTP 实现的说法 我相信 由于 REST 只是一种架构设计 因此它可以通过任何具有合适接口的协议来实现 例如 FTP 然而 他不同意 并认为目前除了 HTTP REST 之外 任何协议都不能实现 我
  • 为什么 Ember.run afterRender 不适用于 CSS 转换?

    根据我的理解 使用 CSS 过渡的一种方法是使用Ember run scheduleOnce afterRender 但是 对我来说 如果不添加超时 它就无法工作 这是在 Ember 1 0 0 中 View Em View extend
  • 如何使用循环在 C# 中将 pi 计算到 N 个位置

    我如何在 C 中计算 PI 到一定的小数位数 我希望能够将一个数字传递到一个方法中 并返回计算到该小数位数的 PI public decimal CalculatePi int places magic return pi Console
  • 可以使用属性启用/禁用 Spring Boot @RestController 吗?

    给定一个 标准 Spring Boot 应用程序 RestController eg RestController RequestMapping value foo produces application json charset UTF
  • 从 Three.js r.58 中的位移贴图计算法线?

    我正在使用 Three js r 58 中的普通着色器 我明白需要法线贴图 但是 我使用的是动态位移贴图 因此预先计算的法线贴图在这种情况下不起作用 我发现的所有光照置换贴图的示例都使用平面着色或预先计算的法线贴图 是否可以根据位移的顶点动
  • 如何对具有命名空间属性 href 的 SVG 元素使用 CSS 属性选择器?

    为什么我不能通过 href 属性选择元素 CSS Works svg image type overlay outline 3px solid blue Doesn t work svg image href temp outline 5p
  • 未找到合适的默认 RequestUpgradeStrategy

    我正在尝试在 Spring 上运行 Websocket 不是 STOMP 而是常规的 websocket 如图所示here 但是 按照教程进行操作后 我收到以下异常 org springframework beans factory Bea
  • 如何从 Java HTTPResponse 解析 JSON?

    我有一个用于刚刚发出的 Web 请求的 HttpResponse 对象 响应是 JSON 格式 所以我需要解析它 我可以用一种极其复杂的方式来做到这一点 但似乎必须有更好的方法 这真的是我能做的最好的事情吗 HttpResponse res
  • 将行添加到现有 UITableView 部分

    我正在尝试获取一些示例代码 了解如何将行添加到现有的UITableView 我正在尝试使用insertRowsAtIndexPaths 功能 tableView insertRowsAtIndexPaths addindexes withR
  • 当前 SynchronizationContext 不能用作 TaskScheduler

    我在用Tasks在我的 ViewModel 中运行长时间运行的服务器调用 并将结果编组回Dispatcher using TaskScheduler FromSyncronizationContext 例如 var context Task
  • NSObject +load 和 +initialize - 它们的作用是什么?

    我有兴趣了解导致开发人员覆盖 initialize 或 load 的情况 文档清楚地表明这些方法是由 Objective C 运行时为您调用的 但这实际上是这些方法的文档所清楚的全部内容 我的好奇心来自于查看 Apple 的示例代码 MVC
  • MySQL 触发器是否可以与多个表或所有表关联?

    我创建了这个触发器来将计算值插入到表中的字段中 以防用户忘记自己输入数据 DELIMITER CREATE TRIGGER OnNewTableRegistry BEFORE INSERT ON eduardo8 plataforma ta
  • UITextField起始光标位置错误

    我有一个带有一些预编译文本的文本字段 文本字段内的文本在视觉上是右对齐的 当我点击文本字段时 我希望光标位于文本末尾 以便我可以准备编辑文本 默认情况下 光标位于文本的开头 或者如果我点击某个单词 则光标位于该单词的末尾 我尝试设置sele
  • Python Spyder 无法初始化 GLX

    尝试设置一个桌面站进行图像处理 我最近安装了 ubuntu 16 04 并经历了guide由 Adrian 安装 python3 cv2 和虚拟环境 我没有使用 cv2 3 1 0 而是使用了 cv2 3 2 0 但除此之外 一切都是一样的
  • 错误:无法加载文件或程序集 netstandard,版本=2.1.0.0

    我有一个 AzureFunctions 项目 需要升级到 NET 标准 2 1 从 2 0 解决方案中的所有其他项目均正确加载和编译 但此 AzureFunctions 项目抛出此错误 错误 System IO FileNotFoundEx
  • 使用 LINQ 对字符串数组进行排序

    我有一个字符串数组声明如下 string data new string 3 string name new string 10 string contact new string 10 string address new string