我的样本数据coloumn来自CSV文件
|----Category------------|
SHOES
SHOES~SHOCKS
SHOES~SHOCKS~ULTRA SOCKS
我希望拆分特定列,并在列表中获取不同的值,如
SHOES
SHOCKS
ULTRA SOCKS
我尝试了以下操作,但它没有按预期工作。
var test = from c in products select c.Category.Split('~').Distinct().ToList();
它实际上会返回以下内容。
有什么想法吗?谢谢。
答案 0 :(得分:2)
在删除重复项之前,我会使用SelectMany
“展平”列表:
products.SelectMany(c => c.Category.Split('~'))
.Distinct()
答案 1 :(得分:1)
您可以使用SelectMany
展平收藏集:
products.SelectMany(p => p.Category.Split('~')).Distinct().ToList();
答案 2 :(得分:1)
你很亲密,你只需要通过SelectMany()
电话来整理你的收藏品以拉出每个分组的各个项目:
// The SelectMany will map the results of each of your Split() calls
// into a single collection (instead of multiple)
var test = products.SelectMany(p => p.Category.Split('~'))
.Distinct()
.ToList();
您可see a complete working example demonstrated here,见下文:
// Example input
var input = new string[] { "SHOES","SHOES~SHOCKS","SHOES~SHOCKS~ULTRA SOCKS" };
// Get your results (yields ["SHOES","SHOCKS","ULTRA SOCKS"])
var output = input.SelectMany(p => p.Split('~'))
.Distinct()
.ToList();
答案 3 :(得分:1)
使用list of strings
将此SelectMany()
列表合并到一个列表中,然后将另一个区别添加到您的列表中。
var test = from c in products select c.Category.Split('~').Distinct().ToList().SelectMany(x => x).Distinct().ToList();
答案 4 :(得分:1)
以下是您在查询语法中的表现方式。
var test = (from p in products
from item in p.Category.Split('~')
select item).Distinct().ToList();