[英]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();
不重復項刪除重復的條目。
// 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.