我有以下方法。
public IEnumerable<Item> ChangeValueIEnumerable()
{
var items = new List<Item>(){
new Item("Item1", 1),
new Item("Item2", 1),
new Item("Item3", 2),
new Item("Item4", 2),
new Item("Item5", 3)
};
var groupedItems = items.GroupBy(i => i.Value)
.Select(x => new Item(x.First().Name, x.Key));
foreach (var item in groupedItems)
{
item.CalculatedValue = item.Name + item.Value;
}
return groupedItems;
}
Run Code Online (Sandbox Code Playgroud)
在groupedItems集合中CalculatedValue,s 为空。但是,如果我在 s 具有值之后添加 a到句子ToList()中。例如:SelectGroupByCalculatedValue
var groupedItems = items.GroupBy(i => i.Value)
.Select(x => new Item(x.First().Name, x.Key)).ToList();
Run Code Online (Sandbox Code Playgroud)
所以,问题是。为什么是这样?我想知道这样做的原因,对我来说解决方案是添加一个ToList()
更新:类的定义 …
我正在尝试在aspnet vNext中创建一个ActionFilter.在此过滤器中,我想访问TempData和ViewData(在以前版本的Controller中都可用).我重写该方法
public override void OnActionExecuting(ActionExecutingContext filterContext)
进入filterContext我有控制器但是是一个object而不是ControllerBase.我原以为是ControllerBase因为在以前版本的MVC中ControllerContext(基类ActionExecutingContext)是a ControllerBase,这里是codeplex中的源代码.我知道这可能是因为POCO控制器.
所以,问题是,如果控制器是一个对象,如何访问TempData和ViewData.简单地做一个向下转换(类似这样(Controller)filterContext.Controller)或者有一个最好的方法来做到这一点.
更新
如果在本博客文章中解释它,但是使用aspnet 5,我想实现.