Linq从分隔文本列中提取段

时间:2009-08-11 01:02:24

标签: asp.net linq

我有一个数据库列,以冒号分隔,描述类别层次结构,如下所示:

ID |分类

100 |国内:树木:水果:苹果

我想从文本中仅提取层次结构“Fruit”的第三个部分。如何使用Linq Regex或Linq过滤来提取该段?每次用户选择一个类别时,以这种方式提取信息是一个好主意吗?

2 个答案:

答案 0 :(得分:1)

尝试String.Split(Char[])方法:

  

返回包含的字符串数组   在这种情况下的子串   由a的元素分隔   指定的Unicode字符数组。

基本上,您可以根据指定的分隔符拆分原始字符串。此方法返回String[]。以下是如何使用它的一个小例子:

using System;

class Program
{
    static void Main()
    {
        String s = "Domestic:Trees:Fruit:Apples";
        String[] parts = s.Split(':');
        Console.WriteLine(parts[2]);
    }
}

答案 1 :(得分:1)

你的问题让人觉得你只想要一个linq答案 - 所以如果你想使用linq,你可以这样做......

string s = "Domestic:Trees:Fruit:Apples".Split(':')
           .Select((item, index) => new {item, index})
           .Where(i => i.index == 2)
           .Select(i => i.item);

在linq中执行此操作与仅拆分字符串并获取所需的字符串不会使您的代码更容易阅读 - 因此您可能只想考虑安德鲁建议的直接拆分。