我正在尝试使用 lambda 函数选择商店并将结果转换为 SelectListItem,以便我可以呈现它。但是它抛出“Select 子句中的表达式类型不正确”错误:
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;
我做错了什么?
编辑:
另外,在这种情况下如何将 Int 转换为 String?以下不起作用:
select (s => new SelectListItem { Value = s.ID.ToString(), Text = s.Name} );
select (s => new SelectListItem { Value = s.ID + "", Text = s.Name} );
编辑 2:
找出 Int 到 String 的转换。微软的典型做法是忘记包含一个 int2string 转换函数。这是每个人都在使用的实际解决方法,具有完整的语法:
select new SelectListItem { Value = SqlFunctions.StringConvert((double)store.ID), Text = store.Name };
将这种情况称为荒谬是一种轻描淡写的说法。
最佳答案
使用 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;
或使用带有 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;
关于c# - 如何在 LINQ select 语句中使用 Lambda,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15577890/