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

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

问题描述

我想选择使用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屋!

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