我现在已经更新到复杂情况,我非常困难。如果你能分享一些亮点,请告诉我。
我不再将此作为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 Clas 等等。
public class JobCateogry
{
public string DisplayName { get; set; }
public string ValueCode { get; set; }
public string Count { get; set; }
public List<JobCateogry> SubCategories { get; set; }
}
我尝试拆分字符串并首先通过拆分然后通过分配将其分配给新类。 但我确信我的做法是错误的,因为在我分手的那一刻,我放松了计数。
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();
你能帮帮忙吗?
(我需要按值代码拆分并显示DisplayName和Count)
*旧问题* 我有一个列表,其中包含类似这样的字符串
"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循环来实现传统方式。 我想知道是否有更简洁的方法来做到这一点?
答案 0 :(得分:2)
拆分每个列表项,然后按类别名称分组应该得到所需的结果:
list.Select(item => item.Split('/'))
.GroupBy(tokens => tokens[0], tokens => tokens[1])
.Select(g => new TheClass
{
Category = g.Key,
SubCategory = g.ToList()
});
答案 1 :(得分: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()
};
答案 2 :(得分: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 ; }
}