当前位置:编程学习 > C#/ASP.NET >>

2个datatable数据比较问题

--------------------编程问答-------------------- 你是用EDM得到tableA的吗?如果是那只能在C#里面比较,这种比较方式比较慢,

人个认为使用存储过程比较应该是最快的,存储过程传入参数@xml,用sqlserver解析生成tableB,在数据里比较后,直接查询结果返回到前端.

linq虽然看上去方便,但是拿到前台后你再做分组之类的就很慢了 --------------------编程问答-------------------- 两个1W行放到界面来处理,估计都够呛 --------------------编程问答-------------------- 用linq的join操作。

如果你要自己实现,你可以借助Dictionary --------------------编程问答--------------------
引用 3 楼 caozhy 的回复:
用linq的join操作。

如果你要自己实现,你可以借助Dictionary

linq语句也试验了,不过好像比较麻烦。
是不是Dictionary<键值,row>这样类型,再查找?
我去试验下 --------------------编程问答--------------------
引用 1 楼 hdhai9451 的回复:
你是用EDM得到tableA的吗?如果是那只能在C#里面比较,这种比较方式比较慢,

人个认为使用存储过程比较应该是最快的,存储过程传入参数@xml,用sqlserver解析生成tableB,在数据里比较后,直接查询结果返回到前端.

linq虽然看上去方便,但是拿到前台后你再做分组之类的就很慢了

从来没试过这个方法,我去试试看 --------------------编程问答-------------------- 看看这个例子

DataTable orders = ds.Tables["SalesOrderHeader"];
DataTable details = ds.Tables["SalesOrderDetail"];

var query =
    from order in orders.AsEnumerable()
    join detail in details.AsEnumerable()
    on order.Field<int>("SalesOrderID") equals
        detail.Field<int>("SalesOrderID")
    where order.Field<bool>("OnlineOrderFlag") == true
    && order.Field<DateTime>("OrderDate").Month == 8
    select new
    {
        SalesOrderID =
            order.Field<int>("SalesOrderID"),
        SalesOrderDetailID =
            detail.Field<int>("SalesOrderDetailID"),
        OrderDate =
            order.Field<DateTime>("OrderDate"),
        ProductID =
            detail.Field<int>("ProductID")
    };


foreach (var order in query)
{
    Console.WriteLine("{0}\t{1}\t{2:d}\t{3}",
        order.SalesOrderID,
        order.SalesOrderDetailID,
        order.OrderDate,
        order.ProductID);
}
补充:.NET技术 ,  C#
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,