简体   繁体   中英

How can i split and get distinct words in a list?

My sample data coloumn, which come from an CSV file is

|----Category------------|

 SHOES
 SHOES~SHOCKS
 SHOES~SHOCKS~ULTRA SOCKS

I would love to split the specific column and get the distinct values in a list like

SHOES
SHOCKS
ULTRA SOCKS

I tried the following, but it does not work as expected.

var test = from c in products select c.Category.Split('~').Distinct().ToList();

It actually returns the following.

在此处输入图片说明

Any thoughts please? Thank you.

I would use SelectMany to "flatten" the list before removing duplicates:

products.SelectMany(c => c.Category.Split('~'))
        .Distinct()

您可以使用SelectMany展平集合:

products.SelectMany(p => p.Category.Split('~')).Distinct().ToList();

You were close, you just needed to flatten out your collection to pull the individual items of each grouping via a SelectMany() call :

// 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();

You can see a complete working example demonstrated here and seen below :

// 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();

通过使用SelectMany()将此list of strings列表list of strings合并到一个列表中,然后向列表中添加另一个Distinct。

var test = from c in products select c.Category.Split('~').Distinct().ToList().SelectMany(x => x).Distinct().ToList();

Here's how you'd do it in query syntax.

var test = (from p in products 
            from item in p.Category.Split('~')
            select item).Distinct().ToList();

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM