0

Я хочу, чтобы мои хранимую процедуру из объекта в случае, если я могу использовать так:Как получить хранимую процедуру как 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?)

ответ

0

я должен конвертировать его в список, а затем (Just Like This):

 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); 
0

Я не могу понять, что возвращает хранимая процедура. В моем проекте, используя 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 

Который дает тот же как таблица запасных частей

Same as Model

может быть полезной

Смежные вопросы