代码之家  ›  专栏  ›  技术社区  ›  Kit Menke

从多项选择字段的数据中获取不同的选择列表?

  •  0
  • Kit Menke  · 技术社区  · 14 年前

    我有一个包含多选选择字段(字符串)的数据表。字段中的值存储如下:

    Charlie
    Alpha
    Alpha; Charlie; Delta
    Bravo; Charlie
    Bravo
    Alpha; Bravo; Charlie
    

    我正在尝试将唯一列表显示在下拉列表中:

    Alpha
    Bravo
    Charlie
    Delta
    

    方法来拆分值并返回 List<string> :

    private static List<string> GetValues(string multiValueString)
    {
        string[] delimiters = {"; "};
        string[] values = multiValueString.Split(delimiters, StringSplitOptions.RemoveEmptyEntries);
        return values.ToList<string>();
    }
    

    我试着用LINQ得到唯一的值。。。但不太明白。我想我可以用 dataTable.AsEnumerable() ,执行类似的选择 .Select(r => GetValues(r.Field<string>("Brand"))) 然后 Union 结果如何。

    但我不能让它正常工作。。我做错什么了?

    2 回复  |  直到 14 年前
        1
  •  2
  •   Paul Ruane    14 年前

    你需要使用 SelectMany 作为 GetValues 将返回多个项目(即 IEnumerable )每排。 选择多 将这些可枚举项展成结果类型的单个可枚举项:

    rows.SelectMany(r => GetValues(r.Field<string>("Brand")))
        .Distinct();
    

    distinct删除重复的条目。

        2
  •  1
  •   jason    14 年前

    使用 Enumerable.Distinct .

    // values is IEnumerable<string> (say the return value from GetValues)
    var uniqueValues = values.Distinct();
    
    rows.SelectMany(r => GetValues(r.Field<string>("Brand"))).Distinct();