如何使用LAMBDA在LINQ select语句 [英] How to use Lambda in LINQ select statement
问题描述
我想选择使用lambda函数,并将结果转换为SelectListItem这样我就可以使其门店。然而,它是扔在SELECT子句中前pression的类型不正确错误:
I am trying to select stores using a lambda function and converting the result to a SelectListItem so I can render it. However it is throwing a "Type of Expression in Select Clause is Incorrect" error:
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;
我在做什么错了?
What am I doing wrong?
编辑:
另外,我怎么转换诠释为String在这种情况呢?以下不工作:
Also, how do I convert Int to String in this situation? The following does not work:
select (s => new SelectListItem { Value = s.ID.ToString(), Text = s.Name} );
select (s => new SelectListItem { Value = s.ID + "", Text = s.Name} );
编辑2:
找出诠释到String的转换。它是如此典型的微软的忘了包括int2string转换功能。下面是实际的解决办法大家都在用,具有完全工作语法:
Figure out the Int to String conversion. It is so typical of Microsoft to forget to include an int2string conversion function. Here is the actual workaround everyone is using, with fully working syntax:
select new SelectListItem { Value = SqlFunctions.StringConvert((double)store.ID), Text = store.Name };
要调用这个情况荒唐的是轻描淡写。
To call this situation absurd is an understatement.
推荐答案
使用LINQ查询前pression
using LINQ query expression
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;
或使用与拉姆达前pressions LINQ扩展方法
or using LINQ extension methods with lambda expressions
IEnumerable<SelectListItem> stores = database.Stores
.Where(store => store.CompanyID == curCompany.ID)
.Select(store => new SelectListItem { Value = store.Name, Text = store.ID });
ViewBag.storeSelector = stores;
这篇关于如何使用LAMBDA在LINQ select语句的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!