LINQ实体框架-计数和查询
我们需要为每个驱动程序ID建立一个表并打印 第一列:驱动程序ID 第二列:有多少行具有此驱动程序ID 第三列:有多少行具有此驱动程序\u ID且接收\u名称不为空 请告诉我如何完成…我只打印了一个getquery:(LINQ实体框架-计数和查询,linq,entity-framework,linq-to-sql,linq-to-entities,linq-to-objects,Linq,Entity Framework,Linq To Sql,Linq To Entities,Linq To Objects,我们需要为每个驱动程序ID建立一个表并打印 第一列:驱动程序ID 第二列:有多少行具有此驱动程序ID 第三列:有多少行具有此驱动程序\u ID且接收\u名称不为空 请告诉我如何完成…我只打印了一个getquery:( SERVER.CS 公共类OrderDataRepository:BaseRepository { 公共类OrderDataResults { 公共长驱动器RID{get;set;} public int OrderCount{get;set;} public int OrderC
SERVER.CS
公共类OrderDataRepository:BaseRepository
{
公共类OrderDataResults
{
公共长驱动器RID{get;set;}
public int OrderCount{get;set;}
public int OrderCountWhereNameIsNotNull{get;set;}
}
公共类OrderViewRepository:BaseRepository
{
公共列表GetOrderDataResults()
{
返回GetQuery()。
其中(x=>x.shipping!=null)。
GroupBy(o=>o.DRIVER\u ID)。
选择(g=>
新OrderDataResults
{
DriverId=g.键,
OrderCount=g.Count(),
OrderCountWhereNameIsNotNull=
g、 计数(o=>o.RECEIVE_NAME!=null)
}).ToList();
}
}
CLIENT.ASPX.CS
公共部分类控件:System.Web.UI.Page
{
受保护的无效页面加载(对象发送方、事件参数e)
{
var rep=新的OrderViewRepository();
列表结果=GetOrderDataResults();
**错误12当前上下文中不存在名称“GetOrderDataResults”
错误11找不到类型或命名空间名称“OrderDataResults”(是否缺少using指令或程序集引用?)
**
DataViewer.DataSource=结果;
DataViewer.DataBind();
}
}
WEBPAGE.ASPX
根据评论编辑答案。我将首先定义一个类来合并查询结果:
SERVER.CS
public class OrderDataRepository : BaseRepository<OrderData>
{
public class OrderDataResults
{
public long DriverId { get; set; }
public int OrderCount { get; set; }
public int OrderCountWhereNameIsNotNull { get; set; }
}
public class OrderViewRepository : BaseRepository<OrderData>
{
public List<OrderDataResults> GetOrderDataResults()
{
return GetQuery().
Where(x => x.SHIPMENT != null).
GroupBy(o => o.DRIVER_ID).
Select(g =>
new OrderDataResults
{
DriverId = g.Key,
OrderCount = g.Count(),
OrderCountWhereNameIsNotNull =
g.Count(o => o.RECEIVE_NAME != null)
}).ToList();
}
}
CLIENT.ASPX.CS
public partial class Control : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
var rep = new OrderViewRepository();
List<OrderDataResults> results = GetOrderDataResults();
**Error 12 The name 'GetOrderDataResults' does not exist in the current context
Error 11 The type or namespace name 'OrderDataResults' could not be found (are you missing a using directive or an assembly reference?)
**
DataViewer.DataSource = results;
DataViewer.DataBind();
}
}
WEBPAGE.ASPX
<form id="Form1" runat="server">
<asp:GridView runat="server" ID="DataViewer">
</asp:GridView>
</form>
您可以从服务器返回以下内容的列表:
public class OrderDataResults // Or whatever you want to call it
{
public int DriverId { get; set; }
public int OrderCount { get; set; }
public int OrderCountWhereNameIsNotNull { get; set; }
}
要查看结果,只需从GridView
定义中删除
部分:
protected void Page_Load(object sender, EventArgs e)
{
var rep = new OrderViewRepository();
List<OrderDataResults> results = rep.GetOrderDataResults();
DataViewer.DataSource = results;
DataViewer.DataBind();
}
文档。在您的情况下,似乎您只想显示数据,因此更简单的控件(如)可能更适合。您不能使用getsomeresults函数,并向我展示如何在不使用getsomeresults的情况下使用上述代码……您能制作一个函数“count\u drivers\u orders”吗我粘贴的代码仅用于示例…这次我将粘贴我在server.cs文件中的所有代码您的代码在服务器端使用我的GetSomeResults函数…我正在寻找一种方法来替换该函数并仅检索单独的表您的代码给了我错误:“错误4当前contextIQueryable results=rep.GetSomeResults()中不存在名称‘GetSomeResults’;请注意,代码中缺少该行确定,我再次尝试帮助您使代码正常工作。您可以尝试一下,看看这是否有帮助。”。
public class OrderViewRepository : BaseRepository<OrderView>
{
public List<OrderDataResults> GetOrderDataResults()
{
return GetQuery().
Where(x => x.SHIPMENT != null).
GroupBy(o => o.DRIVER_ID).
Select(g =>
new OrderDataResults
{
DriverId = g.Key,
OrderCount = g.Count(),
OrderCountWhereNameIsNotNull =
g.Count(o => o.RECEIVE_NAME != null)
}).ToList();
}
}
protected void Page_Load(object sender, EventArgs e)
{
var rep = new OrderViewRepository();
List<OrderDataResults> results = rep.GetOrderDataResults();
DataViewer.DataSource = results;
DataViewer.DataBind();
}
<asp:GridView runat="server" ID="DataViewer">
</asp:GridView>