草庐IT

c# - Linq OrderByDescending,首先为空

我的数据库中有一个包含DateTime?的字段。我想对结果进行排序,以便NULL显示在顶部,然后按DateTime降序排列,例如,nullnull2012-04-012012-01-012011-09-04原因是我正在查看到期日期,尽管有些条目不会过期。 最佳答案 您可以返回DateTime.MaxValue而不是排序表达式中的null,因此首先对具有null日期的行进行排序:yourData.OrderByDescending(row=>row.dateTimeField??DateTime.MaxValue);

c# - LINQ,无法创建 XXX 类型的常量值。在此上下文中仅支持原始类型或枚举类型

在我的应用程序中,我有讲师,他们有他们可以教授的类(class)列表,当我删除一门类(class)时,我想删除与讲师的连接。这是代码:publicvoidRemoveCourse(intcourseId){using(vardb=newAcademicTimetableDbContext()){varcourseFromDb=db.Courses.Find(courseId);vartoRemove=db.Lecturers.Where(l=>l.Courses.Contains(courseFromDb)).ToList();foreach(varlecturerintoRemove

c# - LINQ,无法创建 XXX 类型的常量值。在此上下文中仅支持原始类型或枚举类型

在我的应用程序中,我有讲师,他们有他们可以教授的类(class)列表,当我删除一门类(class)时,我想删除与讲师的连接。这是代码:publicvoidRemoveCourse(intcourseId){using(vardb=newAcademicTimetableDbContext()){varcourseFromDb=db.Courses.Find(courseId);vartoRemove=db.Lecturers.Where(l=>l.Courses.Contains(courseFromDb)).ToList();foreach(varlecturerintoRemove

c# - 将 SQL 转换为 Linq left join with null

我如何正确地将此SQL转换为linqselectt1.ProgramIDfromProgramt1LEFTJOINProgramLocationt2ONt1.ProgramID=t2.ProgramIDwheret2.ProgramIDISNULL我试过了,但是不行varprogy=(fromuindb.ProgramLocationsjoinbindb.Programsonu.ProgramIDequalsb.ProgramIDintoyGfromy1inyG.DefaultIfEmpty()whereu.ProgramID==nullwhereu.ProgramID==nullse

c# - 将 SQL 转换为 Linq left join with null

我如何正确地将此SQL转换为linqselectt1.ProgramIDfromProgramt1LEFTJOINProgramLocationt2ONt1.ProgramID=t2.ProgramIDwheret2.ProgramIDISNULL我试过了,但是不行varprogy=(fromuindb.ProgramLocationsjoinbindb.Programsonu.ProgramIDequalsb.ProgramIDintoyGfromy1inyG.DefaultIfEmpty()whereu.ProgramID==nullwhereu.ProgramID==nullse

c# - 在一个 LINQ 查询中获取两列的总和

假设我有一张名为项目(IDint、Doneint、Totalint)我可以通过两个查询来完成:inttotal=m.Items.Sum(p=>p.Total)intdone=m.Items.Sum(p=>p.Done)但我想在一个查询中完成,像这样:varx=frompinm.Itemsselectnew{Sum(p.Total),Sum(p.Done)};当然有一种方法可以从LINQ语法调用聚合函数...? 最佳答案 这样就可以了:LINQ查询语法:frompinm.Itemsgrouppby1intogselectnew{Sum

c# - 在一个 LINQ 查询中获取两列的总和

假设我有一张名为项目(IDint、Doneint、Totalint)我可以通过两个查询来完成:inttotal=m.Items.Sum(p=>p.Total)intdone=m.Items.Sum(p=>p.Done)但我想在一个查询中完成,像这样:varx=frompinm.Itemsselectnew{Sum(p.Total),Sum(p.Done)};当然有一种方法可以从LINQ语法调用聚合函数...? 最佳答案 这样就可以了:LINQ查询语法:frompinm.Itemsgrouppby1intogselectnew{Sum

c# - 如何使用 LINQ 从列表中选择提供的索引范围内的值

我是一个LINQ新手,试图用它来实现以下目标:我有一个整数列表:-ListintList=newList(newint[]{1,2,3,3,2,1});现在,我想使用LINQ比较前三个元素[索引范围0-2]与后三个[索引范围3-5]的总和。我尝试了LINQSelect和Take扩展方法以及SelectMany方法,但我不知道如何说类似(frompinintListwherepinTakecontiguouselementsofintListfromindexxtox+nselectp).sum()我也查看了Contains扩展方法,但这并没有给我想要的东西。有什么建议么?谢谢。

c# - 如何使用 LINQ 从列表中选择提供的索引范围内的值

我是一个LINQ新手,试图用它来实现以下目标:我有一个整数列表:-ListintList=newList(newint[]{1,2,3,3,2,1});现在,我想使用LINQ比较前三个元素[索引范围0-2]与后三个[索引范围3-5]的总和。我尝试了LINQSelect和Take扩展方法以及SelectMany方法,但我不知道如何说类似(frompinintListwherepinTakecontiguouselementsofintListfromindexxtox+nselectp).sum()我也查看了Contains扩展方法,但这并没有给我想要的东西。有什么建议么?谢谢。

c# - Linq order by, group by 和 order by each group?

我有一个看起来像这样的对象:publicclassStudent{publicstringName{get;set;}publicintGrade{get;set;}}我想创建以下查询:按学生姓名对成绩进行分组,按成绩对每个学生组进行排序,并按每个组中的最高成绩对组进行排序。所以它看起来像这样:A100A80B80B50B40C70C30我创建了以下查询:StudentsGrades.GroupBy(student=>student.Name).OrderBy(studentGradesGroup=>studentGradesGroup.Max(student=>student.Gra