悬赏分: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();
这时候在这段代码的上下文中list的内容被解释为了一个匿名类'a,但是我需要在别的地方——比如ASP.NET MVC中的ViewData中传递、获取并显示这个List中的内容,这时候就出问题了:ViewData是object类型的字典,我无法得知如何把这个ViewData转换为可用的类型,不知如何解决这个问题?总不可能select匿名对象的时候都弄个只用一两次的类来包装着吧?那样不就失去匿名类型的便捷性了吗?
自己设定多一个实体类,然后
select new 自定义实体类 {
xxx = Problem.Submits.Count
}
|
只能用反射来取里面的属性了 |
|
2个月前 JimLiu : 用反射就太不爽了吧? 不过我倒是想到个比较弱的办法,就是把select出来的匿名类拆分成多个东西 比如例子中就拆分成 List<Problem> problemList; 和List<int> problemSubmitCount; 这样,目的只是发挥Linq to Sql的查询功能,不过缺点也很明显——就是封装性被破坏了。 |
|
2个月前 JimLiu : @乐游游 的确也想过这个方法 不过这样随着业务逻辑的不断变化,不是会出现很多只用得了一两次的类吗? |
|
2个月前 乐游游 : 我倒想过自定义一个类把 linq to xxx 生成的实体类全包含了 - -! |