c# - 使用 linq 从字符串中提取对象列表

标签 c# linq

我是 linq 的新手。我有一个具有以下格式的字符串

code:description;code2:description2;code3:description3... etc.

记录以;字符分隔,每条记录有2个字段以:字符分隔。

我正在编写一个 linq 查询来提取具有字段代码和描述的对象列表。 我编写了以下查询,它似乎产生了正确的结果,但我想知道是否有更好或更正确的方法来做到这一点。

var objects =
    from objString in recsString.Split(';')
    let obj = objString.Split(':')
    select new {
        Code = obj[0].Trim(),
        Description = obj[1].Trim()
    };

最佳答案

很好,不过我唯一要观察的是您使用 StringSplitOptions 删除了空条目:

var objects =
from objString in recsString.Split(';', StringSplitOptions.RemoveEmptyEntries)
let obj = objString.Split(':', StringSplitOptions.RemoveEmptyEntries)
select new {
    Code = obj[0].Trim(),
    Description = obj[1].Trim()
};

如果您认为可能缺少信息,您也可以格外安全null检查结果:

var objects =
from objString in recsString.Split(';', StringSplitOptions.RemoveEmptyEntries)
let obj = objString.Split(':', StringSplitOptions.RemoveEmptyEntries)
select new {
    Code = obj.Any() ? obj[0].Trim() : string.Empty,
    Description = obj.Count > 1 ? obj[1].Trim() : string.Empty
};

关于c# - 使用 linq 从字符串中提取对象列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16694282/

相关文章:

c# - MVC ICollection<IFormFile> ValidationState 始终设置为 Skipped

c# - 如何在 LINQ select 语句中使用 Lambda

c# - 使用 LINQ 洗牌

c# - 使用 NUnit Console Runner 运行一个文件夹下的所有测试

c# - 使用通用值类型枚举器跳过 foreach IDisposable 检查

c# - 具有不同数量对象的 WPF MVVM View 。如何?

c# - 在 Xamarin 中从 JavaScript 调用 C#

c# - 根据另一个数组中指定的索引从数组中选择元素c#

C# Linq 查询执行顺序

.net - 具有多个 Order By 子句的 Linq 语句不起作用