using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Data;
public partial class test6_LinqDefault2 : System.Web.UI.Page
{
//新总订单数
public double spOrderNums = 0;
//成功订单
public double SuccessOrderNums = 0;
protected void Page_Load(object sender, EventArgs e)
{
#region 功能测试1
//this.Repeater1.DataSource = this.GetList();
//this.Repeater1.DataBind();
#endregion
testDataTable2();
}
#region 功能测试1
public IList<Student> GetList()
{
IList<Student> list = new List<Student>();
list.Add(new Student("张三", 22));
list.Add(new Student("李四", 25));
return list;
}
public class Student
{
public Student(string _Name, int _Age)
{
this.Name = _Name;
this.Age = _Age;
}
public string Name
{
set;
get;
}
public int Age
{
set;
get;
}
}
public class order
{
public double totalNum { get; set; }
public double goodPercent { get; set; }
public double generalPercent { get; set; }
public double badPercent { get; set; }
}
#endregion
void testDataTable2()
{
DataTable dtA = new DataTable();
dtA.Columns.Add("id", typeof(int));
dtA.Columns.Add("goodNum", typeof(double));
dtA.Columns.Add("generalNum", typeof(double));
dtA.Columns.Add("badNum", typeof(double));
//dtA.Rows.Add(1, "20", "30", "50");
//dtA.Rows.Add(2, "90", "3", "2");
dtA.Rows.Add(3, "1", "5", "10");
dtA.Rows.Add(4, "10", "32", "2");
dtA.Rows.Add(5, "66", "55", "44");
DataTable dtB = dtA.Clone();
dtB.Rows.Add(1, "32", "43", "21");
dtB.Rows.Add(2, "65", "63", "5");
dtB.Rows.Add(3, "4", "54", "5");
dtB.Rows.Add(4, "43", "44", "565");
dtB.Rows.Add(5, "66", "55", "44");
DataTable dtC = dtA.Clone();
dtC.Rows.Add(1, "3", "2", "32");
dtC.Rows.Add(2, "43", "63", "65");
dtC.Rows.Add(3, "7", "9", "76");
dtC.Rows.Add(4, "9", "67", "34");
dtC.Rows.Add(5, "66", "55", "44");
DataTable dtD = dtA.Clone();
dtD.Columns.Add("totalNum", typeof(double));
dtD.Columns.Add("goodPercent", typeof(double));
dtD.Columns.Add("generalPercent", typeof(double));
dtD.Columns.Add("badPercent", typeof(double));
var dtAData= from a in dtA.AsEnumerable() select a ;
var dtBData = from b in dtB.AsEnumerable() select b;
var dtCData = from c in dtC.AsEnumerable() select c;
int aCount = dtAData.Count();
int bCount = dtBData.Count();
int cCount = dtCData.Count();
#region 条数不够补0
for (int i = 1; i <= aCount-bCount; i++)
{
//dtB.Rows.Add(bCount+i, "0", "0", "0");
dtB.Rows.Add(0, "0", "0", "0");
}
for (int i = 1; i <= aCount - cCount; i++)
{
dtC.Rows.Add(0, "0", "0", "0");
}
#endregion
var fullJoinData = (from a in dtA.AsEnumerable()
join c in dtC.AsEnumerable() on a.Field<int>("id") equals c.Field<int>("id")
join b in dtB.AsEnumerable() on c.Field<int>("id") equals b.Field<int>("id")
let goodNum = a.Field<double>("goodNum")
let total1Score = a.Field<double>("goodNum") + a.Field<double>("generalNum") + a.Field<double>("badNum")
let good1percent = Math.Round(goodNum / total1Score, 2)
let goodNum2 = b.Field<double>("goodNum")
let total2Score = b.Field<double>("goodNum") + b.Field<double>("generalNum") + b.Field<double>("badNum")
let good2percent = Math.Round(goodNum2 / total2Score, 2)
let goodNum3 = c.Field<double>("goodNum")
let total3Score = c.Field<double>("goodNum") + c.Field<double>("generalNum") + c.Field<double>("badNum")
let good3percent = Math.Round(goodNum3 / total3Score, 2)
let goodlink = Math.Round((good1percent / good2percent - 1) * 100, 2)
let goodyear = Math.Round((good1percent / good3percent - 1) * 100, 2)
//where goodNum2 > 20
select new
{
id = a.Field<int>("id"),
goodNum = goodNum,
generalNum = a.Field<double>("generalNum"),
badNum = a.Field<double>("badNum"),
total1Score = total1Score,
good1percent = good1percent,
//s2=spOrderNums,
id2 = b.Field<int>("id"),
goodNum2 = goodNum2,
generalNum2 = b.Field<double>("generalNum"),
badNum2 = b.Field<double>("badNum"),
total2Score = total2Score,
good2percent = good2percent,
id3 = c.Field<int>("id"),
goodNum3 = goodNum3,
generalNum3 = c.Field<double>("generalNum"),
badNum3 = c.Field<double>("badNum"),
total3Score = total3Score,
good3percent = good3percent,
goodlink = goodlink,
goodyear = goodyear,
})
// .Skip(supplierPager.CurrentPageIndex-1 ).Take(supplierPager.CurrentPageIndex);
//.Skip((supplierPager.CurrentPageIndex - 1) * supplierPager.PageSize).Take(supplierPager.PageSize * supplierPager.CurrentPageIndex);
.Skip((supplierPager.CurrentPageIndex - 1) * supplierPager.PageSize).Take(supplierPager.PageSize);
//.Skip(4).Take(5);
this.Repeater1.DataSource = fullJoinData;
this.Repeater1.DataBind();
//supplierPager.PageSize;
supplierPager.RecordCount = dtAData.Count();
}
#region 强类型强转换
public static class Binder<TEntity> where TEntity : class
{
public static TResult Eval<TResult>(System.Web.UI.Page p, Func<TEntity, TResult> func)
{
return func((TEntity)p.GetDataItem());
}
}
#endregion
protected void supplierPager_PageChanged(object sender, EventArgs e)
{
testDataTable2();
}
}
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="LinqDefault2.aspx.cs" Inherits="test6_LinqDefault2" %>
<%@ Register assembly="AspNetPager" namespace="Wuqi.Webdiyer" tagprefix="webdiyer" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title></title>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:Repeater ID="Repeater1" runat="server">
<ItemTemplate>
开始
满意:<%#Eval("goodNum")%>
一般:<%#Eval("generalNum")%>
不满意:<%#Eval("badNum")%>
满意度小计:<%#Eval("total1Score")%>
满意度百分比:<%#Eval("good1percent")%>
满意:<%#Eval("goodNum2")%>
一般:<%#Eval("generalNum2")%>
不满意:<%#Eval("badNum2")%>
满意度小计:<%#Eval("total2Score")%>
满意度百分比:<%#Eval("good2percent")%>
满意:<%#Eval("goodNum3")%>
一般:<%#Eval("generalNum3")%>
不满意:<%#Eval("badNum3")%>
满意度小计:<%#Eval("total3Score")%>
满意度百分比:<%#Eval("good3percent")%>
满意环比值:<%# Eval("goodlink")%>%
满意同比值:<%# Eval("goodyear")%>%
结束
<br />
</ItemTemplate>
</asp:Repeater>
<webdiyer:AspNetPager ID="supplierPager" runat="server" Direction="LeftToRight"
FirstPageText="第一页" PageSize="2"
HorizontalAlign="left" LastPageText="最后一页" NextPageText="下一页" PrevPageText="上一页"
Width="100%" CenterCurrentPageButton="True" CustomInfoHTML="当前页码为 %CurrentPageIndex% 总页数 %PageCount% 共 %RecordCount% 条记录"
CustomInfoTextAlign="Left" NumericButtonCount="8" PageIndexBoxType="DropDownList"
ShowCustomInfoSection="Right" AlwaysShow="True"
onpagechanged="supplierPager_PageChanged">
</webdiyer:AspNetPager>
</div>
</form>
</body>
</html>
如果想看3页面
dtA.Rows.Add(1, "20", "30", "50");
dtA.Rows.Add(2, "90", "3", "2");
注释取消
我的分页设置 页长 2,
supplierPager.RecordCount = dtAData.Count(); 页总数
页码 = 页总数 / 页长
第一页数据
第2页面数据