Entity framework 基于查询中的列对结果系统进行分级

Entity framework 基于查询中的列对结果系统进行分级,entity-framework,vb.net-2010,Entity Framework,Vb.net 2010,请我有一个项目,我查询数据库使用实体框架作为我的ORM。这是我的问题 Dim subjectSearch = From subSearch In DemoSchool.EssenceSubjectRegistrations Where subSearch.Session = drpSession.SelectedItem.Text _ AndAlso subSearch.Term = drpTerm.SelectedItem.Text AndA

请我有一个项目,我查询数据库使用实体框架作为我的ORM。这是我的问题

    Dim subjectSearch = From subSearch In DemoSchool.EssenceSubjectRegistrations Where subSearch.Session = drpSession.SelectedItem.Text _
                      AndAlso subSearch.Term = drpTerm.SelectedItem.Text AndAlso subSearch.RealClass.ClassSN = findClassSN.FirstOrDefault AndAlso _
                       subSearch.SubjectCode = drpSubject.SelectedValue _
                       Select New With {.SubjectRegSN = subSearch.SubjectRegSN,
                                       .FirstName = subSearch.Student.FirstName,
                                       .Surname = subSearch.Student.Surname,
                                        .CA1 = subSearch.CA1,
                                         .CA2 = subSearch.CA2,
                                         .CA3 = subSearch.CA3,
                                         .CA4 = subSearch.CA4,
                                         .CA5 = subSearch.CA5,
                                         .CA6 = subSearch.CA6,
                                         .CA7 = subSearch.CA7,
                                         .CA8 = subSearch.CA8,
                                         .CA9 = subSearch.CA9,
                                         .CA10 = subSearch.CA10,
                                       .Exam = subSearch.Exam}
然后我查询我的结果,这样我就可以通过这样做对它进行一些操作

      Dim secSubjectSearch = (From jamie In subjectSearch Select jamie).ToList() _
                           .Select(Function(jamie) New With {.SubjectRegSN = jamie.SubjectRegSN,
                           .FirstName = jamie.FirstName,
                           .Surname = jamie.Surname,
                            .CA1 = jamie.CA1,
                             .CA2 = jamie.CA2,
                             .CA3 = jamie.CA3,
                             .CA4 = jamie.CA4,
                             .CA5 = jamie.CA5,
                             .MidTerm = CDbl(jamie.CA1 + jamie.CA2 + jamie.CA3 + jamie.CA4 + jamie.CA5) / 5,
                             .CA6 = jamie.CA6,
                             .CA7 = jamie.CA7,
                             .CA8 = jamie.CA8,
                             .CA9 = jamie.CA9,
                             .CA10 = jamie.CA10,
                              .Total = CDbl(jamie.CA1 + jamie.CA2 + jamie.CA3 + jamie.CA4 + _
                                       jamie.CA5 + jamie.CA6 + jamie.CA7 + jamie.CA8 + jamie.CA9 + jamie.CA10),
                            .Exam = jamie.Exam})
此结果绑定到一个gridview控件,该控件以假定的方式显示。我的问题是我想从secSubjectSearch创建一个列,该列将显示每个人员记录在搜索结果中的位置。例如,在.Total=CDbl(jamie.CA1+jamie.CA2+jamie.CA3+jamie.CA4+_ jamie.CA5+jamie.CA6+jamie.CA7+jamie.CA8+jamie.CA9+jamie.CA10)结果是一个数值,它包括将列相加。让我说这是

    .Total aspect=(56,56,78,58,90,98,99) i want a column that gives the position of each persons record like 99-1
                                                       98-2
                                                       90-3
                                                       78-4
                                                       58-5
                                                       56-6
                                                       56-6

类似于一种基于搜索栏的评分系统。我需要帮助。如果您需要更多解释,我将尝试详细说明我的问题。谢谢

secSubjectSearch返回的是什么类型的对象?如果它是一个看起来应该是的实体,它们是分部类-您可以创建另一个分部类,其中包含一个动态计算您的值的属性,然后它就变成了一个虚拟列。

请您向我指出如何执行您的建议,我忘了提到,我在这方面还是一个初学者。您说您使用的是EntityFramework;您是否首先生成了一个模型—一个edmx文件,它看起来像一堆表示表的块和表示它们之间关系的线?如果是这样,那么与.edmx文件一起将有一个.Designer.cs文件,其中包含定义实体类的代码,这些类表示表。这些类被定义为partial,这意味着如果在同一个项目中有另一个类的名称相同,并且也被定义为partial,那么它们将合并为一个。这允许您向模型[contd]之外的实体添加功能,以便在刷新模型时不会覆盖新功能。因此,您可以添加从已有属性派生的额外属性(列)。即使您从另一个文件中派生的内容,只要所有内容都是同一个类的一部分。现在你需要弄清楚secSubjectSearch是什么类型的对象。最简单的方法是中断代码并使用调试器来告诉您它是什么类,然后再制作该类的另一部分片段。您必须自己做一些准备工作:)开始并在遇到特定问题时进一步询问。