![](https://iknow-base.cdn.bcebos.com/lxb/notice.png)
在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的形式上的意义,而是需要结合具体的数据库的具体的业务的意义,最好能告诉我它是否是返回一个表,如果是表,有多少行? 展开
补充一下问题,这是用VS2010,net4,winform程序。微软官方的northwind数据库,原封不动地生成的Entity Model,.我在这里请教的并不是这个linq的形式上的意义,而是需要结合具体的数据库的具体的业务的意义,最好能告诉我它是否是返回一个表,如果是表,有多少行? 展开
5个回答
展开全部
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;
展开全部
鼠标放在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类型,但是想知道这个表达式的业务逻辑意义。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
表达式的意思就是 获取Employees(这个应该是linq to sql中的表)这个对象里面的 第一个 EmployeeID==1的Orders对象的第一个的Employees对象
更多追问追答
追问
那这个表达式到底应该返回几行数据?标准的northwind数据库。
追答
Employees 返回的一个类 相当于一行数据 linq to sql里面 很多情况下表名就是类名 或者返回的是一个字段 具体得看 Orders里面Employees是一个对象还是一个字段了
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
还没有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对象
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
em.EmployeeID == 1的第一行吧。
更多追问追答
追问
最好亲自试验了再回答,另外,怎么测试是否是第一行?
追答
你吧数据库放两条数据集试一下不就知道了。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询