本帖最后由 x8299207 于 2013-10-29 21:56:40 编辑

解决方案 »

  1.   

    你是用EDM得到tableA的吗?如果是那只能在C#里面比较,这种比较方式比较慢,人个认为使用存储过程比较应该是最快的,存储过程传入参数@xml,用sqlserver解析生成tableB,在数据里比较后,直接查询结果返回到前端.linq虽然看上去方便,但是拿到前台后你再做分组之类的就很慢了
      

  2.   

    用linq的join操作。如果你要自己实现,你可以借助Dictionary
      

  3.   

    linq语句也试验了,不过好像比较麻烦。
    是不是Dictionary<键值,row>这样类型,再查找?
    我去试验下
      

  4.   

    看看这个例子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);
    }