c# - 使用 LINQ 将值一分为二

标签 c# linq

我有一个看起来像这样的文本文件,我在每个“|”处拆分。 在第三个'|'之间是我需要分成两个单独的列的两个词。拆分时遇到问题。

 Nbr| Address| Name   |Phone|City|State|Zip 
455 |gsgdgsg |fir last|434  |jk  |jh   |0393

我有这样的东西,它正在进行拆分并将输出写入列表。目前我可以很好地进行拆分并选择第一部分,但是当我进行拆分并选择第二部分时,我得到索引超出数组错误的边界。

var Names = File
            .ReadAllLines(path)
            .Select(a => a.Split(new[] { '|' }, StringSplitOptions.None))
            .Select(a => new {
                phoneNbr = a[0].Trim(),
                Name = a[2].Trim().Split(' ')[0],
                Name2 = a[2].Trim().Split(' ')[1], //gives me error I think becuase it already split it
                addr = a[1].Trim()
            })
              .ToList(); 

最佳答案

在某些记录中,索引 2 的第三列中可能没有两个词。在使用第二个元素之前,您需要确保拆分后得到两个元素。

改变

Name2 = a[2].Trim().Split(' ')[1]

Name2 = a[2].Trim().Split(' ').Length > 1 ? a[2].Trim().Split(' ')[1] : ""

关于c# - 使用 LINQ 将值一分为二,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14083413/

相关文章:

.net - LINQ 中的 Distinct 是什么意思?

c# - 在 C# 中使用 LINQ Distinct

c# - 生成 NSwag 客户端作为构建的一部分

c# - 带有两个 where 子句的 Linq 语句

c# - NServiceBus - 基于内容的路由和审计 - 我的方法可以吗?

c# - 我们是否使类的对象具有私有(private)构造函数?

c# - EF Code First - Linq to Entities Union EqualityComparer

c# - 如何使用 linq 获取最近 10 分钟的记录?

c# - Unity 5 Windows Phone 8 游戏在 wp8 设备中启动时崩溃

c# - 标记在 XML 命名空间中不存在