ren*_*thy 1 c# linq collections
如何使用LINQ在statemetn中重写给定的foreach循环?
List<ItemData> dbItems = _dataService.GetAllItems();
List<ItemModel> modeList = new List<ItemModel>();
foreach (ItemData p in dbItems )
{
ItemModel m = Mapper.ItemDataToModelMap(p);
modeList.Add(m);
}
Run Code Online (Sandbox Code Playgroud)
我试过这个,但这给出了错误:无法将类型'System.Collections.Generic.IEnumerable'隐式转换为'System.Collections.Generic.IEnumerable'...
var modeList= from m in dbItems
select new {item = Mapper.ItemDataToModelMap(m)
};
Run Code Online (Sandbox Code Playgroud)
编辑:使用它的方法应该返回IEnumerable,所以这是错误原因.我不应该改变返回类型,安装代码和匿名类型.
为了有一个List<ItemModel>结果试试这个:
var modeList = dbItems
.Select(m => Mapper.ItemDatatoModelMap(m))
.ToList();
Run Code Online (Sandbox Code Playgroud)
使用查询表示法:
var modeList = (from m in dbItems select Mapper.ItemDataToModelMap(m))
.ToList();
Run Code Online (Sandbox Code Playgroud)
new { ... }符号创建一个匿名类型,而您需要List<T>一个特定类型 - ItemModel.
另请注意,语法上没有任何错误:
var modeList= from m in dbItems
select new {item = Mapper.ItemDataToModelMap(m)};
Run Code Online (Sandbox Code Playgroud)
但是你对错误的描述并不清楚.你要么不是var因为你提出的(但是List<ItemModel>),要么做其他事情modeList会导致类型不匹配.
| 归档时间: |
|
| 查看次数: |
4400 次 |
| 最近记录: |