linq中密钥的用途是什么?我不确定它的目的是什么?它能做什么?它如何影响代码的运行方式?
else if (statType.Equals("Stat07"))
{
//Score Stats by School
{
q = from t in dbsRound
orderby t.RoundNumber
group t by t.Contestant.School into g
select new
{
School = g.Key,
MaxScore = (from gr in g select gr.ScoreTotal).Max(),
MinScore = (from gr in g select gr.ScoreTotal).Min(),
AverageScore = (from gr in g select gr.ScoreTotal).Average()
};
GvStats.DataSource = q.ToList<dynamic>();
}
}
答案 0 :(得分:1)
关键是你小组中常见的事情。
例如,如果您有一系列单词并希望将所有单词组合在其第一个字母上,那么您的组中的单词以字母“a”开头,而组中的单词则以字母'开头' b'等等。
或者,如果您将单词序列分组为具有相同字符数的单词组,则只有一组单词只包含一个字符,一组单词包含两个字符,一组包含三个字符等。 / p>
钥匙是你过去常常分组的东西。所以关键是第一个字母或单词,或者当你按字符数分组时单词中的字母数。
您可以使用该键识别该组。因此,如果您希望组中的单词以字母'h'开头,则表示您希望组序列中的元素具有等于'h'的键。如果按字符数分组,可以要求使用键4的组来获取所有四个字母的单词。
组密钥是唯一的。您可能确定只有一个这样的元素,因此您可以要求第一个(或者如果没有这样的组则默认)
示例:下载荷马的Iliad一书,并将结果分成一系列单词:
var uri = "http://www.gutenberg.org/files/6130/6130-0.txt";
var iliadWords = new String(
new WebClient().DownloadString(uri)
.Select(token => char.IsLetter(token) ? token : ' ')
.ToArray())
.Split(new char[] { ' ' }, StringSplitOptions.RemoveEmptyEntries);
var wordsGroupedByFirstLetter = iliadWords
.GroupBy(word => word.FirstOrDefault());
IEnumerable<string> allWordsStartingWithX = wordsGroupedByFirstLetter
.FirstOrDefault(group => group.key == 'X');