[已解决问题] Linq to SQL中select匿名类的问题
提问时间: 2008-09-24 09:29
悬赏分:50 浏览:270 次

Code
var test = from o in data.Problems
.Where(p
=> p.Visible)
let Problem
= o
select
new {
Problem,
Problem.Submits.Count
};
var list
= test.ToList();
这是我一个Linq to SQL代码段

这时候在这段代码的上下文中list的内容被解释为了一个匿名类'a,但是我需要在别的地方——比如ASP.NET MVC中的ViewData中传递、获取并显示这个List中的内容,这时候就出问题了:ViewData是object类型的字典,我无法得知如何把这个ViewData转换为可用的类型,不知如何解决这个问题?总不可能select匿名对象的时候都弄个只用一两次的类来包装着吧?那样不就失去匿名类型的便捷性了吗?

提问者:JimLiu - 菜鸟二级
最佳答案

自己设定多一个实体类,然后

select new 自定义实体类 {

  xxx = Problem.Submits.Count

}

2008/9/24 13:12:03 回答者:乐游游


提问者对于答案的评价:不过我最后还是没弄个新的类,觉得那样那个类最终会成为“孤魂野类” 我把Select出来的List<匿名类>遍历一遍,把各个部件分开拆成若干个新的List,比较浪费时间,不过我的确没有更好的办法
其它回答(1)

只能用反射来取里面的属性了


2个月前   回答者:Gray Zhang - 老鸟四级
评论
2个月前   JimLiu :
用反射就太不爽了吧?
不过我倒是想到个比较弱的办法,就是把select出来的匿名类拆分成多个东西
比如例子中就拆分成
List<Problem> problemList;
和List<int> problemSubmitCount;
这样,目的只是发挥Linq to Sql的查询功能,不过缺点也很明显——就是封装性被破坏了。
2个月前   JimLiu :
@乐游游
的确也想过这个方法
不过这样随着业务逻辑的不断变化,不是会出现很多只用得了一两次的类吗?
2个月前   乐游游 :
我倒想过自定义一个类把 linq to xxx 生成的实体类全包含了 - -!


   您需要登录以后才能回答!
 

我要提问

我的问题


快到期问题



> 问题排行榜

相关内容

相关链接