c# - 从 Linq lambda 返回多个字段

标签 c# .net lambda

我有以下代码,它从 columnName = Y' 的数据库返回结果。代码字很好,直到我想限制查询返回的字段。

我得到了错误

无法将类型“System.Linq.IQueryable[AnonymousType#1]”隐式转换为“System.Linq.IQueryable[MyApp.Models.Approved]”。存在显式转换(是否缺少强制转换?)

public IQueryable<Approved> ReturnRecordsByObjectiveFlag(string columnName)
    {
        var param = Expression.Parameter(typeof(Approved), "x");
        var predicate = Expression.Lambda<Func<Approved, bool>>(
            Expression.Equal(
                Expression.PropertyOrField(param, columnName),
                Expression.Constant('Y',typeof(char?))
            ), param);
        return db.Approved.Where(predicate).Select(x =>new{x.RefNo, x.RefGroup, x.Location });
    }

在这一行我得到了错误

return db.Approved.Where(predicate).Select(x =>new{x.RefNo, x.RefGroup, x.Location });  

我在哪里制作类型转换?

非常感谢 Marc Gravell Answering an earlier question用同样的方法

最佳答案

这应该可行

return db.Approved.Where(predicate).Select(x =>new Approved{x.RefNo, x.RefGroup, x.Location });  

它给出了那个错误,因为 select 语句正在创建一个匿名类型

关于c# - 从 Linq lambda 返回多个字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4714596/

相关文章:

C++ find_if - 如何查找 ID (int(

c# - (UWP) mediaElement 导致错误 :unsupport video type or invalid file path

javascript - 如何将 Jsonstring 反序列化为 C# listObject

.net - 如何将大于 5 MB(大约)的文件上传到 Amazon S3(官方 SDK)?

c# - 在 .Net Dynamics CRM 应用程序中保存要联系的父帐户

.net - OracleCommand 内存泄漏

c# - 根据拼写距离按属性区分

c++ - 通过 copy 和 decltype 捕获 Lambda 引用

c# - 在 iTextSharp PdfPTable 中的图像网格之间设置边距或单元格间距

c# - 将值从 C# asp.net 传递到 JAVASCRIPT 不起作用