当使用select new object(){} </object>时,如何从linq返回ICollection <object>

时间:2013-12-11 20:07:34

标签: c# asp.net-mvc linq

我有以下linq目前正在工作,但我真正想要的是返回ICollection<SexyPeopleVM>而不是列表。但我无法理解语法和其他替代方案,我尝试在运行时失败。

这可能吗?我怎样才能做到这一点?

var o = from s in sexyPeople
                    select new SexyPeopleVM()
                    {
                        id = s.ID,
                        title = s.Title,
                        views = s.Views,
                        url = s.GetFullyQualifiedURL(),
                        friendlyDate = s.DateCreated.AsShortFriendly()
                    };
            List<SexyPeopleVM> list = o.ToList();
            return list;

3 个答案:

答案 0 :(得分:7)

List<T>实施ICollection<T> 你不需要做任何事情。

答案 1 :(得分:3)

正如SLaks所说,他打败了我,但我想补充一下,你可以让你的代码更清洁一点:

return (from s in sexyPeople
                    select new SexyPeopleVM()
                    {
                        id = s.ID,
                        title = s.Title,
                        views = s.Views,
                        url = s.GetFullyQualifiedURL(),
                        friendlyDate = s.DateCreated.AsShortFriendly()
                    }).ToList();

另外一件事,如果你没有,请获取Resharper

我现在用

var list = new List<object>();

而不是:

List<object> list = new List<object>();

A good post as to why to use var.

这只是一种编码风格购买Resharper可以清理你的代码。

我养成了习惯和其他更干净的习惯,比如上面两个,感谢Resharper。我现在不能没有它。

答案 2 :(得分:1)

如果您真的想要ICollection,请执行

 return o.ToList() as ICollection<SexyPeopleVM>;