性能与面试:
LINQ大部分时间不会影响性能,但是面试时算法题一般尽量避免使用正则表达式和LINQ等高级类库
案例一:
有一个用逗号分隔的表示成绩字符串,如“61,90,100,99,18,22,38,66,80,93,55,50,89”,计算这些成绩的平均值
C#
//案例一:有一个用逗号分隔的表示成绩字符串,
//如61,90,100,99,18,22,38,66,80,93,55,50,89”,
//计算这些成绩的平均值
string ScoreString = "61,90,100,99,18,22,38,66,80,93,55,50,89";
//string[] Scores = ScoreString.Split(",");
////LINQ转换
////IEnumerable<int> ints = Scores.Select(i => Convert.ToInt32(i));
//List<int> Scoresint = new List<int>();
//foreach (string Score in Scores) {
// Scoresint.Add(Convert.ToInt32(Score));
//}
//Console.WriteLine(Scoresint.Average());
//链式调用
double avg = ScoreString.Split(",").Select(e=> Convert.ToInt32(e)).Average();
Console.WriteLine(avg);
案例二:
统计一个字符串中每个字母出现的频率,然后按照从高到低顺序输出出现频率高于2次的单词和其出现的频率
C#
//案例二:
//统计一个字符串中每个字母出现的频率,
//然后按照从高到低顺序输出出现频率高于2次的单词和其出现的频率
string NewString = "dhahdasjDAF,kdhaFAsjkD,dAawHfadasdhjfhkf";
//IsLetter是否是字母,IsLower改为小写 select 投影
var result = NewString.Where(e => char.IsLetter(e))
.Select(g => char.ToLower(g))
.GroupBy(e => e)
.Select(r => new { Letter = r.Key, Frequency = r.Count()})
.OrderByDescending(r=>r.Frequency)
.Where(r=>r.Frequency>2);
foreach (var item in result)
{
Console.WriteLine(item);
}