2013-12-19 48 views
1

我現在已經更新爲複雜的情況,而且我非常困難。請讓我知道你是否可以分享一些光。將字符串分組並添加到列表中

我沒有更多此爲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 

所以,我更新了現有的JobCateogry柯樂 等。

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

我試圖拆分字符串,並分兩步首先通過拆分,然後通過assiging分配給新類。 但我確定我做錯了,因爲我分裂的那一刻,我失去了計數。

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循環來實現傳統方式。 我想知道是否有任何更乾淨的方式來做到這一點?

回答

2

拆分每個列表項,然後按類別名稱分組應該得到期望的結果:

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

主題創建者可能希望SubCategory成爲令牌的集合[1] - 我認爲此時它不明確。此外,'g.ToList()'是否返回一個'List '或一個'List '? – Warty

+0

@ItzWarty,'列表'不是故意的,感謝您的評論。 – Andrei

0

你可以試試這個方法:

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() 
      }; 
0

像這樣的東西應該工作

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 ; } 
} 
相關問題