我们在应用程序中非常重要地使用存储过程,并使用LinqToSql执行我们的proc并填充要从DB访问方法返回的List对象。但是,我们需要使用AutoMapper将一些对象映射到另一个对象类型,并且显然需要AutoMapper扩展Project()。要求IQuryable而List是实现IEnumerable。
源代码:
public List<T> GetRecordsByTable<T>(MasterTables masterTable)
{
var masters = new List<MasterData>();
using (_masterContext)
{
masters = (from o in _masterContext.procGetMasterDataList(masterTable.GetHashCode(), null, null, null, null, null)
select new MasterData
{
Id = (long)o.iId,
Table = (MasterTables)o.TableId,
ItemValue = o.ItemValue,
ItemText = o.ItemText,
ParentItemValue = o.ParentItemValue,
IsActive = o.IsActive,
CustomField1 = o.CustomField1,
CustomField2 = o.CustomField2,
CustomField3 = o.CustomField3,
IsDefault = o.IsDefault
}).ToList();
}
return masters.All.Project().To<T>;
编译错误:
System.Collections.Generic.List'不包含'Project'的定义,并且没有扩展方法'Project'接受类型'System.Collections.Generic.List'的第一个参数可以找到(你错过了吗? using指令或程序集引用?)folder \ Common \ MasterDataRepository.cs 116 28 Omnicx.Data
答案 0 :(得分:1)
我想你已经添加了以下几行:
using AutoMapper;
using AutoMapper.QueryableExtensions;
答案 1 :(得分:1)
您必须在退货声明中使用masters.AsQuerable().Project().To<T>
。