C#可查询订购人、取货人和哪里不正常工作
这是我的代码:C#可查询订购人、取货人和哪里不正常工作,c#,C#,这是我的代码: IQueryable<ICB_TRANSACTION> Query = DbContext.Set<ICB_TRANSACTION>(); if (_input.i_Type != -99) // -99 = All type { Query = Query.Where(x => x.TYPE == _input.i_Type); } if (_input.i_Member_ID != null && _input.i_Me
IQueryable<ICB_TRANSACTION> Query = DbContext.Set<ICB_TRANSACTION>();
if (_input.i_Type != -99) // -99 = All type
{
Query = Query.Where(x => x.TYPE == _input.i_Type);
}
if (_input.i_Member_ID != null && _input.i_Member_ID > 0)
{
Query = Query.Where(x => x.CREATE_BY_ID == _input.i_Member_ID);
}
if (_input.b_OderByDesc)
Query = Query.OrderByDescending(x => x.ID);
else
Query = Query.OrderBy(x => x.ID);
if (_input.i_Top > 0)
{
Query = Query.Take(_input.i_Top);
}
return Query.ToList();
IQueryable Query=DbContext.Set();
如果(_input.i_Type!=-99)/-99=所有类型
{
Query=Query.Where(x=>x.TYPE==\u input.i\u TYPE);
}
if(_input.i_Member_ID!=null&&u input.i_Member_ID>0)
{
Query=Query.Where(x=>x.CREATE\u BY\u ID===\u input.i\u Member\u ID);
}
如果(_input.b_OderByDesc)
Query=Query.OrderByDescending(x=>x.ID);
其他的
Query=Query.OrderBy(x=>x.ID);
如果(_input.i_Top>0)
{
Query=Query.Take(\u input.i\u Top);
}
返回Query.ToList();
这就是结果:
但我想这样:
我该怎么做?请帮帮我 如果我在你的代码中看到一些奇怪的东西,那就是: 您有一个
IQueryable
您尝试按/take排序:但是OrderBy
/OrderBy降序
返回一个IOrderedQueryable
,并将结果分配给您的IQueryable
即使IOrderedQueryable
继承自IQueryable
,我想这可能会导致意外的结果
我会那样做
//filteredQuery is an IQueryable<ICB_TRANSACTION>
var filteredQuery = DbContext.Set<ICB_TRANSACTION>();
if (_input.i_Type != -99) // -99 = All type
filteredQuery = filteredQuery.Where(x => x.TYPE == _input.i_Type);
if (_input.i_Member_ID != null && _input.i_Member_ID > 0)
filteredQuery = filteredQuery.Where(x => x.CREATE_BY_ID == _input.i_Member_ID);
//now we have done the filters, let's do the order by / take part.
//sortedQuery is an IOrderedQueryable<ICB_TRANSACTION>
var sortedQuery = _input.b_OderByDesc
? filteredQuery.OrderByDescending(x => x.ID)
: filteredQuery.OrderBy(x => x.ID);
if (_input.i_Top > 0)
sortedQuery = sortedQueryable .Take(_input.i_Top);
return sortedQuery.ToList();
//filteredQuery是一个IQueryable
var filteredQuery=DbContext.Set();
如果(_input.i_Type!=-99)/-99=所有类型
filteredQuery=filteredQuery.Where(x=>x.TYPE==\u input.i\u TYPE);
if(_input.i_Member_ID!=null&&u input.i_Member_ID>0)
filteredQuery=filteredQuery.Where(x=>x.CREATE\u BY\u ID==\u input.i\u Member\u ID);
//现在我们已经完成了过滤器,让我们按/参与订单。
//sortedQuery是一个IOrderedQueryable
var sortedQuery=\u input.b\u OderByDesc
? filteredQuery.OrderByDescending(x=>x.ID)
:filteredQuery.OrderBy(x=>x.ID);
如果(_input.i_Top>0)
sortedQuery=sortedQueryable.Take(_input.i_Top);
返回sortedQuery.ToList();
你能解释一下什么工作不正常吗
(遗憾的是,这不是不言自明的)?我可能遗漏了一些东西,但我看不出sql命令之间有什么主要区别,除了子查询的用法。我有查询,但使用“order by[table].ID desc->无行,但更改“desc to asc->某些记录”。我和我的同事无法解释这一点。子查询总是有行