c# - 如何在 LINQ select 语句中使用 Lambda

标签 c# asp.net-mvc linq lambda

我正在尝试使用 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/

相关文章:

c# - 我在服务器上制作了 csv 文件 - 我怎样才能让客户端下载这个文件?

C#模板引擎

C# 获取集合中最流行的 2 项组合

c# - 如何只修改 LINQ 投影中的一个或两个字段?

c# - 无法在 C# 中将类型 'string' 隐式转换为 'System.Web.HtmlString'?

c# - 在 ActionResult 方法中抛出异常

asp.net - 多个消费者,单个数据提供者 - 对于 RIA 来说还为时过早?选项?

c# - ASP.NET MVC : validating age > 18 having 3 combo box

c# - 添加jquery.unobtrusive-ajax.js引用后上传为空

c# - 你能在 linq 中评估或等效吗?