首页 新闻 会员 周边 捐助

Linq如何拿到单个结果对象,而不是IEnumrable《T》

0
[已解决问题] 解决于 2012-06-05 16:10
View Code
1 var aRole =
2 from aspnet_Roles rol
3 in _allRoles
4 where rol.RoleId.ToString() == ddlRoles.SelectedValue
5 select rol;


返回的结果是IEnumrable

怎么返回单个对象???

ScottGu的主页 ScottGu | 菜鸟二级 | 园豆:210
提问于:2012-03-17 20:39
< >
分享
最佳答案
1
 var aRole =
( from aspnet_Roles rol
in _allRoles
where rol.RoleId.ToString() == ddlRoles.SelectedValue
select rol).SingleOrDefault()
奖励园豆:5
Apwangwei | 菜鸟二级 |园豆:207 | 2012-05-31 16:40
其他回答(7)
0

好像有个first开头的方法。

悟行 | 园豆:12559 (专家六级) | 2012-03-17 21:32
5
var aRole =  (from aspnet_Roles rol
in _allRoles
where rol.RoleId.ToString() == ddlRoles.SelectedValue
select rol).FirstOrDefault();
dudu | 园豆:31030 (高人七级) | 2012-03-17 21:33

采纳答案时页面给出的是复选框,结果采纳结果只采纳最后一个勾选的!

我是第先勾的你的答案。。。

支持(0) 反对(0) ScottGu | 园豆:210 (菜鸟二级) | 2012-06-05 22:52
0
var aRole = aspnet_Roles.First(x=>x.RoleId == ddlRoles.SelectedValue);
Linq不一定要用你那种写法.
沈融兴 | 园豆:404 (菜鸟二级) | 2012-03-18 11:13
0
var aRole = aspnet_Roles.FirstOrDefault(x=>x.RoleId == ddlRoles.SelectedValue);

使用扩展方法形式写吧

李永京 | 园豆:3114 (老鸟四级) | 2012-03-18 17:54

条件是放在where中的,你这个查询结果是一个bool值,而不是一个ROLE对象。

支持(0) 反对(0) 无之无 | 园豆:5095 (大侠五级) | 2012-06-05 16:43
0
var aRole =
( from aspnet_Roles rol
in _allRoles
4where rol.RoleId.ToString() == ddlRoles.SelectedValue
select rol).First();
yangtam | 园豆:369 (菜鸟二级) | 2012-03-27 21:56
0

你都能拿到IEnumrable了在Foreach循环得到对象@

CarsonCui | 园豆:162 (初学一级) | 2012-06-05 15:48
0

你这个给分!!!

1、首先,DOUDOU先给你回答的

2、其次,DOUDOU的也是正确的

3、至于你选择的最优解与DOUDOU以及yangtam三个方案之间的区别是,要了解Single、SingleOrDefault、First、FirstOrDefault四个方法的区别。

 

DOUDOU跟最优解的关键:如果你的记录是唯一的或者不存在,最优解最好,这个答案能避免出现重复的。假如你的数据是多个,那就用DOUDOU的方案,这个方案在只有一个唯一的时候也是运行安全的(但会忽略业务逻辑安全,比如数据应该唯一,却有多个的情况)。

 

至于yangtam的方案,要求至少有一条记录,不能不存在。同样的,如果使用Single方法,则要求必须有且只能有一条记录。

 

Single:必须有且只能有一条记录

First/Last:至少需要有一条记录

SingleOrDefault:最多只能有一条记录

FirstOrDefault/LastOrDefault:可以有任意多条记录

无之无 | 园豆:5095 (大侠五级) | 2012-06-05 16:49

容我解释啊!!!无辜啊!!!

我是先勾选了DOUDOU的答案(是方形的复选框哦),然后看别人正确的也一并都勾选上了

然后神奇的时刻有木有!!

居然只采纳了最后一个勾选的答案!!!!

 

我还以为像StackExchange一样可以修改为采纳DouDOU的答案!

 

找了一圈,居然无法修改!!!!

 

我想不行就给管理员提个意见!!结果找了一圈!!

 

还是木有!!!!!!!!!!!!!!!!!!!!!!!

 

在此只能说sorry。。。。诶

支持(0) 反对(0) ScottGu | 园豆:210 (菜鸟二级) | 2012-06-05 22:49

@Kevin_: 哦。原来这样啊。

这里的结贴系统有时很方便,有时。。。也很让人吐槽。

结贴的时候,先把那些计划给分的分数给了,最后对最优答案打勾,会自动把所有的分数(或剩余的分数)给这个最优答案。

我遇到过我被选为最优答案后,只得到一分,而别的非最优答案却比我都多。

支持(0) 反对(0) 无之无 | 园豆:5095 (大侠五级) | 2012-06-06 08:17
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册