如何在 LINQ 选择语句中使用 Lambda [英] How to use Lambda in LINQ select statement

查看:24
本文介绍了如何在 LINQ 选择语句中使用 Lambda的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在尝试使用 lambda 函数选择商店并将结果转换为 SelectListItem 以便我可以呈现它.但是它会抛出选择子句中的表达式类型不正确"错误:

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;

我做错了什么?

另外,在这种情况下如何将 Int 转换为 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:

弄清楚 Int 到 String 的转换.忘记包含 int2string 转换函数是 Microsoft 的典型做法.这是每个人都在使用的实际解决方法,具有完全有效的语法:

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 查询表达式

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;

或在 lambda 表达式中使用 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;

这篇关于如何在 LINQ 选择语句中使用 Lambda的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆