关于一个LINQ查询的疑问

zdqyundou 2010-05-13 10:21:25

var q = from p in ds_driver.BAS_Drivers
where p.id == ((View_DriverList)this.dataGrid1.SelectedItem).id
select p;


可以看到我是从一个实体类里去查询数据,q也得到了记录。
但是,我不能这样做BAS_Driver bd = q; 怎么才能把结果q转成实体类呢?
...全文
89 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
zdqyundou 2010-05-13
  • 打赏
  • 举报
回复
明白了~
lon123 2010-05-13
  • 打赏
  • 举报
回复
记住是List,返回的可是多个记录,如果你只要第一条记录就 .firstordefault()

BAS_Driver q = (from p in ds_driver.BAS_Drivers
where p.id == ((View_DriverList)this.dataGrid1.SelectedItem).id
select p).FirstOrDefault()

因为查询结果默认是多个,因为linq一开始并不知道你要查询多少条,所以他只是返回所有符合条件的对象的集合
zdqyundou 2010-05-13
  • 打赏
  • 举报
回复
是的,List< BAS_Driver> q = (from p in ds_driver.BAS_Drivers
where p.id == ((View_DriverList)this.dataGrid1.SelectedItem).id
select p).ToList();这样之后,q就是List<>了,但是还是不能BAS_Driver bd = q,因为bd是实体类,必须要foreach吗?
lon123 2010-05-13
  • 打赏
  • 举报
回复
List< BAS_Driver> q = (from p in ds_driver.BAS_Drivers
where p.id == ((View_DriverList)this.dataGrid1.SelectedItem).id
select p).ToList();

就是这个了
zdqyundou 2010-05-13
  • 打赏
  • 举报
回复
是的,我现在就只能foreach,不能不用foreach转换吗?
lon123 2010-05-13
  • 打赏
  • 举报
回复
var 是个范型, 你要不就需要转换,要不就需要foreach
比如
foreach(var v in q)
{
//每个var的操作
}
或者
foreach(BAS_Driver v in q)
{
//每个BAS_Driver的操作
}
lon123 2010-05-13
  • 打赏
  • 举报
回复
你要的实体要是什么类型?
你可以如果查询结果就是你的那个类型,你就可以cast
或者你可以直接

List< BAS_Driver> q = (from p in ds_driver.BAS_Drivers
where p.id == ((View_DriverList)this.dataGrid1.SelectedItem).id
select p).ToList();
记住是List,返回的可是多个记录,如果你只要第一个就 .firstordefault()
q107770540 2010-05-13
  • 打赏
  • 举报
回复
select new 一下

8,492

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 LINQ
社区管理员
  • LINQ
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧