如何将存储过程获取为 IQueryable?
How to get stored procedure as IQueryable?
我想从实体中获取我的存储过程,以防我可以像这样使用:
var WagonQuery = db.spGetTravelBYRTravelInfo(DepartureDate, FromId, ToId);
if (WagonId != 0)
WagonQuery = WagonQuery.Where(p => p.WagonID == WagonId); // HERE IS ERROR. Wagonquery Can Not Uses Like forexample List,So I Can Filter It And Use Several Where Clauses
grdTravels.DataSource = WagonQuery;
grdTravels.DataBind();
这里是错误:
Cannot implicitly convert type 'System.Collections.Generic.IEnumerable' to 'System.Data.Objects.ObjectResult'. An explicit conversion exists (are you missing a cast?)
我应该将其转换为列表然后(就像这样):
List<spGetTravelBYRTravelInfo_Result> lst = db.spGetTravelBYRTravelInfo(DepartureDate, FromId, ToId).ToList();
var dt = lst.Select(p => p);
if (WagonId != 0)
dt = dt.Where(p => p.WagonID == WagonId);
if (ddlReserved.SelectedValue == "t")
dt = dt.Where(p => p.Presell > 0);
我搞不懂你的存储过程是什么returns。在我使用 EF 6.1.3 的项目中,通过执行以下操作,您可以从数据库
中动态过滤列表
List<SparePart> spSpares = db.Database.SqlQuery<SparePart>("spGetSparePartsFromProductId " + Convert.ToString(productId) + "," + Convert.ToString(subProduct));
我的模型在哪里
public partial class SparePart
{
public long ItemID { get; set; }
public string ItemCode { get; set; }
public string ItemName { get; set; }
public Nullable<decimal> ItemPrice { get; set; }
public bool IsActive { get; set; }
public string ItemDesc { get; set; }
public Nullable<int> ItemGroup { get; set; }
public string Model { get; set; }
public string MajorCategory { get; set; }
public string MinorCategory { get; set; }
public string UOM { get; set; }
}
和存储过程
CREATE PROC [dbo].[spGetSparePartsFromProductId]
(
@productId bigint,
@subproductId bigint=0
)
AS
BEGIN
if @productId=1
select * from SpareParts
END
GO
产量与 SpareParts 相同 table
可能会有一些帮助
我想从实体中获取我的存储过程,以防我可以像这样使用:
var WagonQuery = db.spGetTravelBYRTravelInfo(DepartureDate, FromId, ToId);
if (WagonId != 0)
WagonQuery = WagonQuery.Where(p => p.WagonID == WagonId); // HERE IS ERROR. Wagonquery Can Not Uses Like forexample List,So I Can Filter It And Use Several Where Clauses
grdTravels.DataSource = WagonQuery;
grdTravels.DataBind();
这里是错误:
Cannot implicitly convert type 'System.Collections.Generic.IEnumerable' to 'System.Data.Objects.ObjectResult'. An explicit conversion exists (are you missing a cast?)
我应该将其转换为列表然后(就像这样):
List<spGetTravelBYRTravelInfo_Result> lst = db.spGetTravelBYRTravelInfo(DepartureDate, FromId, ToId).ToList();
var dt = lst.Select(p => p);
if (WagonId != 0)
dt = dt.Where(p => p.WagonID == WagonId);
if (ddlReserved.SelectedValue == "t")
dt = dt.Where(p => p.Presell > 0);
我搞不懂你的存储过程是什么returns。在我使用 EF 6.1.3 的项目中,通过执行以下操作,您可以从数据库
中动态过滤列表 List<SparePart> spSpares = db.Database.SqlQuery<SparePart>("spGetSparePartsFromProductId " + Convert.ToString(productId) + "," + Convert.ToString(subProduct));
我的模型在哪里
public partial class SparePart
{
public long ItemID { get; set; }
public string ItemCode { get; set; }
public string ItemName { get; set; }
public Nullable<decimal> ItemPrice { get; set; }
public bool IsActive { get; set; }
public string ItemDesc { get; set; }
public Nullable<int> ItemGroup { get; set; }
public string Model { get; set; }
public string MajorCategory { get; set; }
public string MinorCategory { get; set; }
public string UOM { get; set; }
}
和存储过程
CREATE PROC [dbo].[spGetSparePartsFromProductId]
(
@productId bigint,
@subproductId bigint=0
)
AS
BEGIN
if @productId=1
select * from SpareParts
END
GO
产量与 SpareParts 相同 table
可能会有一些帮助