LINQ查询对象集合
2008-07-01 20:34
465 查看
此示例演示如何对一个 Student 对象列表执行简单查询。每个 Student 对象都包含一些有关该学生的基本信息,以及一个表示该学生的四次考试得分的列表。
此应用程序充当此部分中其他很多示例的框架,这些示例都使用相同的 students 数据源。
下面的查询返回那些在其第一次考试中得分为 85 分或更高的学生。
我们特意将此查询编写得非常简单,以使您能够进行试验。例如,您可以在 where 子句中尝试使用更多的谓词,也可以使用 orderby 子句对结果进行排序。
结果为:
此应用程序充当此部分中其他很多示例的框架,这些示例都使用相同的 students 数据源。
下面的查询返回那些在其第一次考试中得分为 85 分或更高的学生。
public class StudentClass
{
#region data
protected enum GradeLevel { FirstYear = 1, SecondYear, ThirdYear, FourthYear };
protected class Student
{
public string FirstName { get; set; }
public string LastName { get; set; }
public int ID { get; set; }
public GradeLevel Year;
public List<int> ExamScores;
}
protected static List<Student> students = new List<Student>
{
new Student {FirstName = "Terry", LastName = "Adams",
ID = 120, Year = GradeLevel.SecondYear, ExamScores = new List<int>{ 99, 82, 81, 79}},
new Student {FirstName = "Fadi", LastName = "Fakhouri",
ID = 116, Year = GradeLevel.ThirdYear,ExamScores = new List<int>{ 99, 86, 90, 94}},
new Student {FirstName = "Hanying", LastName = "Feng",
ID = 117, Year = GradeLevel.FirstYear, ExamScores = new List<int>{ 93, 92, 80, 87}},
new Student {FirstName = "Cesar", LastName = "Garcia",
ID = 114, Year = GradeLevel.FourthYear,ExamScores = new List<int>{ 97, 89, 85, 82}},
new Student {FirstName = "Debra", LastName = "Garcia",
ID = 115, Year = GradeLevel.ThirdYear, ExamScores = new List<int>{ 35, 72, 91, 70}},
new Student {FirstName = "Hugo", LastName = "Garcia",
ID = 118, Year = GradeLevel.SecondYear, ExamScores = new List<int>{ 92, 90, 83, 78}},
new Student {FirstName = "Sven", LastName = "Mortensen",
ID = 113, Year = GradeLevel.FirstYear, ExamScores = new List<int>{ 88, 94, 65, 91}},
new Student {FirstName = "Claire", LastName = "O'Donnell",
ID = 112, Year = GradeLevel.FourthYear, ExamScores = new List<int>{ 75, 84, 91, 39}},
new Student {FirstName = "Svetlana", LastName = "Omelchenko",
ID = 111, Year = GradeLevel.SecondYear, ExamScores = new List<int>{ 97, 92, 81, 60}},
new Student {FirstName = "Lance", LastName = "Tucker",
ID = 119, Year = GradeLevel.ThirdYear, ExamScores = new List<int>{ 68, 79, 88, 92}},
new Student {FirstName = "Michael", LastName = "Tucker",
ID = 122, Year = GradeLevel.FirstYear, ExamScores = new List<int>{ 94, 92, 91, 91}},
new Student {FirstName = "Eugene", LastName = "Zabokritski",
ID = 121, Year = GradeLevel.FourthYear, ExamScores = new List<int>{ 96, 85, 91, 60}}
};
#endregion
//Helper method
protected static int GetPercentile(Student s)
{
double avg = s.ExamScores.Average();
return avg > 0 ? (int)avg / 10 : 0;
}
public static void Main()
{
QueryHighScores(1, 90);
// Keep the console window open in debug mode
Console.WriteLine("Press any key to exit");
Console.ReadKey();
}
static void QueryHighScores(int exam, int score)
{
var highScores = from student in students
where student.ExamScores[exam] > score
select new {Name = student.FirstName, Score = student.ExamScores[exam]};
foreach (var item in highScores)
{
Console.WriteLine("{0,-15}{1}", item.Name, item.Score);
}
}
}
我们特意将此查询编写得非常简单,以使您能够进行试验。例如,您可以在 where 子句中尝试使用更多的谓词,也可以使用 orderby 子句对结果进行排序。
结果为:
相关文章推荐
- LINQ学习笔记(9) LINQ to Objects---查询内存中对象的集合
- 用LINQ在集合中查询特定对象
- 用LINQ在集合中查询特定对象
- Linq集合查询出现无法将类型为“System.Int32”的对象强制转换为类型“System.String”异常
- LINQ - 查询对象集合
- 回收站查询,linq对对象集合的使用
- 回收站查询,linq对对象集合的使用
- List<ExpendoObject> 对象使用Linq 查询.
- Linq查询datatable的记录集合
- spring-mongo-template中对内嵌集合对象 不定参数的查询
- 查询返回的是对象集合
- Linq查询中类型的转化以及序列化XXX对象时检测到循环引用
- 查询Array中确定数值的对象&JS linq使用 = linq.js
- Spring框架针对dao层的jdbcTemplate操作crud之query查询数据操作 —— 查询表,返回结果为对象的list集合
- C#.Net:List<T>集合列表的Linq语句查询示例
- 使用Linq 查询数据 构建对象 select new{}
- Hibernate中关于多表连接查询hql 和 sql 返回值集合中对象问题
- C# LINQ查询之对象
- Linq 学习(7) 延迟执行 & 查询非泛型集合
- MongoDB学习笔记~自己封装的Curd操作(查询集合对象属性,更新集合对象)