例如,主要数据是
主题作者问题
体育泰勒'问题'
历史泰勒'问题'
体育泰勒'问题'
我需要计算每个主题有多少问题,并显示我需要创建另一个列表的答案,其中只包含主题和数字。 所以看起来应该是这样的:
体育2
历史1
计算我有多少问题
static void Method(List<Class> list)
{
int sport = 0;
int history = 0;
for (int i = 0; i < list.Count; i++)
{
if (list[i].Theme == "History")
{
history++;
}
else if (list[i].Theme == "Sport")
{
sport++;
}}
所以知道我正在试图弄清楚如何通过List
来展示它答案 0 :(得分:2)
听起来你只想要主题和数量?您可以按主题对项目进行分组,并计算每组中的项目数:
var sportsAndCounts = list
.GroupBy(x => x.Theme)
.Select(x => $"{x.Key} {x.Count()}");
这会创建您正在描述的字符串,但您可以将分组投影到您需要的任何内容。
答案 1 :(得分:0)
你可以用Dictionary
来做到这一点!只需看下面的代码:
static void Theme(List<Class> list) {
var dict = new Dictionary<string, int>();
for (var current in list) {
if (dict.ContainsKey(current.Theme) {
dict[current.Theme]++;
} else {
dict[current.Theme] = 1;
}
}
}
之后,您的计数在dict
。只需通过例如dict["History"]
答案 2 :(得分:0)
使用实体框架..您可以完成
var query = list.GroupBy(p => p.Theme)
.Select(g => new { Sport = g.Key, Count = g.Count() });
var查询中的你应该有你假装的东西。
PS。没有测试代码;
答案 3 :(得分:0)
List<Question> QuestionList = new List<Question>
{
new Question{ Theme = "Sport", Author = "Tyler", T = "Question", },
new Question{ Theme = "History", Author = "Tyler", T = "Question", },
new Question{ Theme = "Sport", Author = "Tyler", T = "Question", },
};
var HistoryCount = QuestionList.Count(x => x.Theme == "History");
var SportCount = QuestionList.Count(x => x.Theme == "Sport");
HistoryCount将为2, SportCount将是1。
这将要求您引用System.Linq。
答案 4 :(得分:0)
简单方法是使用Linq和group by group
var query = from item in list
group item by item.Theme into group
select new { Question = group.Key, Count = group.Count()};
foreach(var item in query){
Console.WriteLine("{0} {1}", item.Question, item.Count);
}
Dictionary<string, int> themes = new Dictionary<string, int>();
但您也可以使用词典存储每个主题并计算:
Dictionary<string, int> themes = new Dictionary<string, int>();
for (int i = 0; i < list.Count; i++)
{
if(themes.ContainsKey(list[i].Theme))
themes[this[i].Theme]++;
else
themes[this[i].Theme = 1;
}
foreach(var keyValuePair in themes.OrderByDescending(x => x.Value).ThenBy(x => x.Key)){
Console.WriteLine("{0} {1}", keyValuePair.Key, keyValuePair.Value);
}