C# 使用Linq进行拆分和分组
我已经完成了下面的工作,效果很好C# 使用Linq进行拆分和分组,c#,.net,linq,C#,.net,Linq,我已经完成了下面的工作,效果很好 public StandardReportsModel GetStandardReportsModel(string adUser, string adPassword, IPrincipal user) { var myItems = getMyItems().Where(myItem => !string.IsNullOrEmpty(myItem.Description)); var categories = new List&l
public StandardReportsModel GetStandardReportsModel(string adUser, string adPassword, IPrincipal user)
{
var myItems = getMyItems().Where(myItem => !string.IsNullOrEmpty(myItem.Description));
var categories = new List<string>();
var myItems = new List<MyModel>();
foreach (var myItem in myItems)
{
var myIndex = myItem.Description.IndexOf('*');
var category = myIndex != -1 ? myItem.Description.Substring(0, myIndex).ToUpper() : myItem.Description.ToUpper();
if (categories.IndexOf(category) == -1)
{
categories.Add(category);
}
myItems.Add(getMyItem(myItem, category));
}
categories.Sort();
return new StandardModel { Categories = categories, MyItems = myItems };
}
private MyModel getMyItem(MyItem myItem, string category)
{
var categoryIdentifierIndex = myItem.Description.LastIndexOf(Delimiters.CategoryDescriptionDelimiter);
var description = categoryIdentifierIndex != -1 ? myItem.Description.Substring(categoryIdentifierIndex + 1, (myItem.Description.Length - categoryIdentifierIndex + 1))) : myItem.Description;
return new MyModel{ Name = myItem.Name, Description = myItem.Description, Category = category };
}
public class StandardModel
{
public List<string> Categories { get; set; }
public List<MyModel> MyItems { get; set; }
}
我想要类别和它们的项目。也许我必须在这里使用group by
请建议字典结果=myItems
Dictionary<string, List<MyModel>> result = myItems
.Where(myItem => !string.IsNullOrEmpty(myItem.Description))
.Select(ci => new MyModel
{
Name = ci.Name,
Category = ci.Description.Split('*')[0],
Description = ci.Description.Split('*')[2]
})
.GroupBy(e => e.Category)
.ToDictionary(e => e.Key, e => e.ToList());
.Where(myItem=>!string.IsNullOrEmpty(myItem.Description))
.选择(ci=>new MyModel
{
Name=ci.Name,
Category=ci.Description.Split('*')[0],
Description=ci.Description.Split('*')[2]
})
.GroupBy(e=>e.Category)
.ToDictionary(e=>e.Key,e=>e.ToList());
字典结果=myItems
.Where(myItem=>!string.IsNullOrEmpty(myItem.Description))
.选择(ci=>new MyModel
{
Name=ci.Name,
Category=ci.Description.Split('*')[0],
Description=ci.Description.Split('*')[2]
})
.GroupBy(e=>e.Category)
.ToDictionary(e=>e.Key,e=>e.ToList());
Dictionary<string, List<MyModel>> result = myItems
.Where(myItem => !string.IsNullOrEmpty(myItem.Description))
.Select(ci => new MyModel
{
Name = ci.Name,
Category = ci.Description.Split('*')[0],
Description = ci.Description.Split('*')[2]
})
.GroupBy(e => e.Category)
.ToDictionary(e => e.Key, e => e.ToList());