簡體   English   中英

從多選字段的數據中獲得不同的選擇列表?

[英]Get distinct list of choices from a multiple choice field's data?

我有一個包含多選選擇字段(字符串)的數據表。 字段中的值存儲方式如下:

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 ,結果不知何故。

但是我不能完全正常工作..我在做什么錯?

您需要使用SelectMany因為GetValues將為每行返回多個項目(即IEnumerable )。 SelectMany這些枚舉類型展平為結果類型的單個枚舉類型:

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

不重復項刪除重復的條目。

使用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();

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM