在Entity Framework里面,下面的语句应该是什么类型?

en.Employees.First<Employees>(em=>em.EmployeeID==1).Orders.First().Employees补充一下问题,这是... en.Employees.First<Employees>(em => em.EmployeeID == 1).Orders.First().Employees
补充一下问题,这是用VS2010,net4,winform程序。微软官方的northwind数据库,原封不动地生成的Entity Model,.我在这里请教的并不是这个linq的形式上的意义,而是需要结合具体的数据库的具体的业务的意义,最好能告诉我它是否是返回一个表,如果是表,有多少行?
展开
 我来答
Jarhf
2013-07-22 · TA获得超过1862个赞
知道小有建树答主
回答量:1736
采纳率:25%
帮助的人:1032万
展开全部
en.Employees//ObjectSet<Employees>,获取雇员表的所有记录,是一个集合
             .First<Employees>(em => em.EmployeeID == 1)//取ID=1的一条雇员记录,是一条记录
             .Orders//取这个雇员的所有订单记录,是一个集合(订单表有外键EmployeeID关联到雇员表,一个雇员对应多个订单)
             .First()//取上文订单集合的第一条!
             .Employees;//取上文那个订单的是谁的,是一条雇员记录
             
           另外看了你的其他回答,请不要以为名字相同就是同一个东西,得看它父级是什么!
追问
既然你说了:他最终是一条雇员记录,那你告诉我怎么绑定到Datagridview吧。
追答

DataGridView的数据源只接受 集合类型,对于单条记录你可以新建一个List集合,把单条记录添加到里面,然后把List集合作为数据源,代码如下

Employees employees = en.Employees.......................//略;
List<Employees> lstEmployees = new List<Employees>();
lstEmpployees.Add(employees);
this.dataGridView1.DataSource = lstEmpployees;
帐号已注销
2013-07-22 · TA获得超过105个赞
知道小有建树答主
回答量:128
采纳率:100%
帮助的人:103万
展开全部

鼠标放在First().Employees的Employees上看是什么类型就是什么类型,要不用类型推断——var声明这个变量,var会自动替你找出它的类型,但这里的var和javascript的var是有区别的,这里的var代指了你声明的类型,js的var声明成bool型,还可以赋值为其他类型

例:

var employees=en.Employees.First<Employees>(em => em.EmployeeID == 1).Orders.First().Employees;
追问
鼠标放过去根本就没有,你没试过怎么乱说?那你说为什么不能指定它为DataSource?我不一定是要知道确切的.net类型,但是想知道这个表达式的业务逻辑意义。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
鲁海123
2013-07-22 · TA获得超过283个赞
知道小有建树答主
回答量:306
采纳率:100%
帮助的人:325万
展开全部
表达式的意思就是 获取Employees(这个应该是linq to sql中的表)这个对象里面的 第一个 EmployeeID==1的Orders对象的第一个的Employees对象
更多追问追答
追问
那这个表达式到底应该返回几行数据?标准的northwind数据库。
追答
Employees 返回的一个类 相当于一行数据 linq to sql里面 很多情况下表名就是类名 或者返回的是一个字段  具体得看 Orders里面Employees是一个对象还是一个字段了
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
两壶好酒
2013-07-22 · TA获得超过172个赞
知道小有建树答主
回答量:122
采纳率:100%
帮助的人:65.1万
展开全部
还没有ToList或者ToArray,类型应该是IQueryable<Employees>
更多追问追答
追问
en.Employees与en.Employees.First(em => em.EmployeeID == 1).Orders.First().Employees应该是一个类型吧,为什么前者可以绑定DataSource而后者不行,后者到底是什么类型?
追答
en.Employees, 返回的是DbSet的集合,当用作数据源的时候,会自动执行ToList这类查询方法执行查询,然后会返回一个集合绑定数据源

如果Employees和Orders确实有主外键关系,那么.Orders之后,应该会返回与该Employees相关的所有Orders的集合,这时候再.First()取到的是该集合的第一个Orders,再.Employees,这样主外键关系混淆了,你去掉后者的.Employees之后,看看整句话返回的是不是一个Orders对象
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
h199112
2013-07-22
知道答主
回答量:8
采纳率:0%
帮助的人:8176
展开全部
em.EmployeeID == 1的第一行吧。
更多追问追答
追问
最好亲自试验了再回答,另外,怎么测试是否是第一行?
追答
你吧数据库放两条数据集试一下不就知道了。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式