Bil*_*ill 58 c# linq asp.net-mvc lambda
我试图使用lambda函数选择商店并将结果转换为SelectListItem,以便我可以渲染它.但它抛出" 选择子句中的表达式类型不正确 "错误:
IEnumerable<SelectListItem> stores =
from store in database.Stores
where store.CompanyID == curCompany.ID
select (s => new SelectListItem { Value = s.ID, Text = s.Name} );
ViewBag.storeSelector = stores;
Run Code Online (Sandbox Code Playgroud)
我究竟做错了什么?
编辑:
另外,在这种情况下如何将Int转换为String?以下不起作用:
select (s => new SelectListItem { Value = s.ID.ToString(), Text = s.Name} );
select (s => new SelectListItem { Value = s.ID + "", Text = s.Name} );
Run Code Online (Sandbox Code Playgroud)
编辑2:
找出Int到String的转换.微软很常见的是忘记包含int2string转换函数.以下是每个人都在使用的实际解决方法,具有完全可用的语法:
select new SelectListItem { Value = SqlFunctions.StringConvert((double)store.ID), Text = store.Name };
Run Code Online (Sandbox Code Playgroud)
称这种情况荒谬是轻描淡写的.
Rus*_*Cam 113
使用LINQ查询表达式
IEnumerable<SelectListItem> stores =
from store in database.Stores
where store.CompanyID == curCompany.ID
select new SelectListItem { Value = store.Name, Text = store.ID };
ViewBag.storeSelector = stores;
Run Code Online (Sandbox Code Playgroud)
或者使用带有lambda表达式的LINQ扩展方法
IEnumerable<SelectListItem> stores = database.Stores
.Where(store => store.CompanyID == curCompany.ID)
.Select(store => new SelectListItem { Value = store.Name, Text = store.ID });
ViewBag.storeSelector = stores;
Run Code Online (Sandbox Code Playgroud)
Jus*_*ner 18
为什么不使用所有Lambda语法?
database.Stores.Where(s => s.CompanyID == curCompany.ID)
.Select(s => new SelectListItem
{
Value = s.Name,
Text = s.ID
});
Run Code Online (Sandbox Code Playgroud)
Jon*_*eet 16
您似乎试图混合查询表达式语法和"普通"lambda表达式语法.你可以使用:
IEnumerable<SelectListItem> stores =
from store in database.Stores
where store.CompanyID == curCompany.ID
select new SelectListItem { Value = store.Name, Text = store.ID};
ViewBag.storeSelector = stores;
Run Code Online (Sandbox Code Playgroud)
要么:
IEnumerable<SelectListItem> stores = database.Stores
.Where(store => store.CompanyID == curCompany.ID)
.Select(s => new SelectListItem { Value = s.Name, Text = s.ID});
ViewBag.storeSelector = stores;
Run Code Online (Sandbox Code Playgroud)
你不能像你想要的那样混合两者.
小智 5
Lambda 表达式结果
var storesList = context.Stores.Select(x => new { Value= x.name,Text= x.ID }).ToList();
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
404994 次 |
最近记录: |