C# 使用Linq向EF传递参数时的填充视图
下面的代码正在运行。。CustomView已填充,没有任何错误 自定义视图C# 使用Linq向EF传递参数时的填充视图,c#,asp.net,entity-framework,function,linq-to-entities,C#,Asp.net,Entity Framework,Function,Linq To Entities,下面的代码正在运行。。CustomView已填充,没有任何错误 自定义视图 public static ProductView CustomView(Product data) { var view = new ProductView(); view.ID = data.ID; view.Number = data.Number; var invetoryCount = GetInvetoryCountNumber(data.Number); if (i
public static ProductView CustomView(Product data)
{
var view = new ProductView();
view.ID = data.ID;
view.Number = data.Number;
var invetoryCount = GetInvetoryCountNumber(data.Number);
if (invetoryCount < 1)
view.SoldOut = true;
return view;
}
公共静态产品视图CustomView(产品数据)
{
var view=新产品视图();
view.ID=data.ID;
view.Number=data.Number;
var invetoryCount=GetInvetoryCountNumber(data.Number);
如果(投资计数<1)
view.SoldOut=true;
返回视图;
}
功能
public static List<ProductView> GetAll()
{
using (var ctx = new DBSolutionEntities())
{
var data = ctx.Products.OrderBy(p => p.Name).ToList();
return data.Select(CustomView).ToList();
}
}
公共静态列表GetAll()
{
使用(var ctx=new DBSolutionEntities())
{
var data=ctx.Products.OrderBy(p=>p.Name.ToList();
返回数据.Select(CustomView.ToList();
}
}
我想在函数中添加一个附加参数,以跳过库存搜索
自定义视图-添加了bool
public static ProductView CustomView(Product data, bool skipInvCheck)
{
var view = new ProductView();
view.ID = data.ID;
view.Number = data.Number;
if(skipInvCheck)
{
var invetoryCount = GetInvetoryCountNumber(data.Number);
if (invetoryCount < 1)
view.SoldOut = true;
}
return view;
}
publicstaticproductview自定义视图(产品数据,boolskipinvcheck)
{
var view=新产品视图();
view.ID=data.ID;
view.Number=data.Number;
如果(skipInvCheck)
{
var invetoryCount=GetInvetoryCountNumber(data.Number);
如果(投资计数<1)
view.SoldOut=true;
}
返回视图;
}
当我将bool参数添加到CustomView并调用它时
public static List<ProductView> GetWithoutInvSoldOut()
{
using (var ctx = new DBSolutionEntities())
{
var data = ctx.Products.OrderBy(p => p.Name).ToList();
return data.Select(CustomView, false).ToList();
}
}
publicstaticlist GetWithoutInvSoldOut()
{
使用(var ctx=new DBSolutionEntities())
{
var data=ctx.Products.OrderBy(p=>p.Name.ToList();
返回数据.Select(CustomView,false).ToList();
}
}
我得到以下错误:
无法从用法推断方法“System.Linq.Enumerable.Select(System.Collections.Generic.IEnumerable,System.Func)”的类型参数。尝试显式指定类型参数
传递参数时,如何调用return填充视图return data.Select(CustomView,false).ToList()
p、 当获得一条记录(而不是ToList)时,CustomView通过
返回CustomView(数据,false) 这里的主要问题是,
Select
方法需要一个只接受一个参数的函数,而CustomView
需要两个参数。解决此问题的最简单方法是使用lambda表达式将bool
参数导入CustomView
方法
public static List<ProductView> GetWithoutInvSoldOut()
{
using (var ctx = new DBSolutionEntities())
{
var data = ctx.Products.OrderBy(p => p.Name).ToList();
return data.Select(x => CustomView(x, false)).ToList();
}
}
publicstaticlist GetWithoutInvSoldOut()
{
使用(var ctx=new DBSolutionEntities())
{
var data=ctx.Products.OrderBy(p=>p.Name.ToList();
返回数据。选择(x=>CustomView(x,false)).ToList();
}
}
这里的主要问题是Select
方法需要一个只接受一个参数的函数,而CustomView
需要两个参数。解决此问题的最简单方法是使用lambda表达式将bool
参数导入CustomView
方法
public static List<ProductView> GetWithoutInvSoldOut()
{
using (var ctx = new DBSolutionEntities())
{
var data = ctx.Products.OrderBy(p => p.Name).ToList();
return data.Select(x => CustomView(x, false)).ToList();
}
}
publicstaticlist GetWithoutInvSoldOut()
{
使用(var ctx=new DBSolutionEntities())
{
var data=ctx.Products.OrderBy(p=>p.Name.ToList();
返回数据。选择(x=>CustomView(x,false)).ToList();
}
}