对字符串进行分组并添加到列表中

本文关键字:添加 列表 字符串 | 更新日期: 2024-10-30 19:56:28

我现在更新到复杂情况,我非常卡住了。请让我知道您是否可以分享一些光。

我不再有这个作为List<string>.它现在是一个List<categories> 它将具有以下属性

public class Categories 
    {
        public string DisplayName { get; set; }
        public string ValueCode { get; set; }
        public string Count { get; set; }           
    }

这将具有类似

Category1/SubCategory1
cat1/sc1
5
Category1/SubCategory2
cat1/sc2
4
Category 2/Subcategory1
cat2/sc1
5
Category 2/Subcategory2
cat2/sc2
23

所以,我更新了我现有的工作分类等等。

 public class JobCateogry 
    {
        public string DisplayName { get; set; }
        public string ValueCode { get; set; }
        public string Count { get; set; }
        public List<JobCateogry> SubCategories { get; set; }
    }

我尝试拆分字符串并将其分两步分配给新类,首先通过拆分,然后通过assiing。但我确信我的做法是错误的,因为当我分裂的那一刻,我失去了计数.

var lstCategory =  Categories 
                        .Where(i => i.count > 0)
                        .Select(item => item.valueCode.Split('/')                                        
                        .Select(k =>(k)).ToList();
   List<JobCategories> jobcategories = lstCategory
                                      .Select(item => item.Split(QueryStringConstants.CAT_SEPERATOR.ToCharArray()[0]))
                                      .GroupBy(tokens => tokens[0].Trim(), tokens => tokens[1])
                            .Select(g => new JobCategories(g.Key,  g.DisplayName,g.ToList(),)).ToList();

你能帮忙吗?

(我需要按值代码拆分并显示显示名称和计数)

*

老问题 *我有一个列表,其中包含这样的字符串

"Category1/SubType1"
"Category1/SubType2"
"Category1/SubType3"  
"Category1/SubType4" 
"Category2/SubType1"
"Category2/SubType2"   
"Category2/SubType3" 
"Category2/SubType4"

我有一个有两个属性的类。

public string Category { get; set; }
public  List<string> SubCategory{ get; set; }

我需要遍历列表,选择所有类别,然后向它们添加子类别。

我已经对列表进行了排序,并且能够通过获取第一个字符串并与其他字符串进行比较来执行 for 循环来实现传统方式。我想知道是否有更整洁的方法可以做到这一点?

对字符串进行分组并添加到列表中

拆分每个列表项,然后按类别名称分组应得到所需的结果:

list.Select(item => item.Split('/'))
    .GroupBy(tokens => tokens[0], tokens => tokens[1])
    .Select(g => new TheClass
                     {
                         Category = g.Key,
                         SubCategory = g.ToList()
                     });

您可以尝试此方法:

var query = from input in inputs
            let split = input.Split('/')
            group split[1] by split[0] into grouping
            select new MyClass
            {
                Category = grouping.Key,
                SubCategory = grouping.ToList()
            };

这样的东西应该有效

IEnumerable<string> items = GetSomeItems() ;
Widget[] list = items
                .Select( s => s.Split('/') )
                .GroupBy( x => x[0] , x => x[1] )
                .Select( g => new Widget( g.Key , g.ToList() ) )
                .ToArray()
                ;

给定这样的类:

class Widget
{
  public Widget ( string category , IEnumerable<string> subcategories )
  {
    this.Category      = category ;
    this.Subcategories = subcategories.ToArray() ;
  }
  public string Category { get; private set; }
  public string[] Subcategories { get ; private set ; }
}