本帖最后由 pbw68277118 于 2011-01-19 17:26:29 编辑

解决方案 »

  1.   

    先把两个table都按Keywords升序排序,写个while循环删除。
      

  2.   

    HTML代码如下<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Default.aspx.cs" Inherits="WebApplication1._Default" %><!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 id="divParent">
            <asp:Repeater ID="Repeater1" runat="server">
                <HeaderTemplate>
                    <table style="width: 100%;">
                        <tr>
                            <td>
                                Keywords
                            </td>
                            <td>
                                ArticleId
                            </td>
                        </tr>
                </HeaderTemplate>
                <ItemTemplate>
                    <tr>
                        <td>
                            <%# Eval("Keywords")%>
                        </td>
                        <td>
                            <%# Eval("ArticleId")%>
                        </td>
                    </tr>
                </ItemTemplate>
                <FooterTemplate>
                    </table>
                </FooterTemplate>
            </asp:Repeater>
            ======================================================================
            <asp:Repeater ID="Repeater2" runat="server">
                <HeaderTemplate>
                    <table style="width: 100%;">
                        <tr>
                            <td>
                                Keywords
                            </td>
                            <td>
                                ArticleId
                            </td>
                        </tr>
                </HeaderTemplate>
                <ItemTemplate>
                    <tr>
                        <td>
                            <%# Eval("Keywords")%>
                        </td>
                        <td>
                            <%# Eval("ArticleId")%>
                        </td>
                    </tr>
                </ItemTemplate>
                <FooterTemplate>
                    </table>
                </FooterTemplate>
            </asp:Repeater>
        </div>
        </form>
    </body>
    </html>
    CS代码如下DataTable TableA = new DataTable();
                TableA.Columns.Add("Keywords");
                TableA.Columns.Add("ArticleId");
                object[] obj1 = new object[] {"hello1","world1" };
                object[] obj2 = new object[] { "hello2", "world2" };
                object[] obj3 = new object[] { "hello3", "world3" };
                object[] obj4 = new object[] { "hello4", "world4" };
                object[] obj5 = new object[] { "hello5", "world4" };
                object[] obj6 = new object[] { "hello6", "world4" };
                TableA.Rows.Add(obj1);
                TableA.Rows.Add(obj2);
                TableA.Rows.Add(obj3);
                TableA.Rows.Add(obj4);            DataTable TableB = new DataTable();
                TableB.Columns.Add("Keywords");
                TableB.Columns.Add("ArticleId");
                TableB.Rows.Add(obj1);
                TableB.Rows.Add(obj2);
                TableB.Rows.Add(obj5);
                TableB.Rows.Add(obj6);            ArrayList list = new ArrayList();            foreach (DataRow drA in TableA.Rows)
                {
                    foreach (DataRow drB in TableB.Rows)
                    {
                        if ((drA.ItemArray[0].ToString() == drB.ItemArray[0].ToString()) &&
                           (drA.ItemArray[1].ToString() == drB.ItemArray[1].ToString())
                            )
                        {
                            list.Add(drB);
                        }
                    }
                }
                for (int i = 0; i < list.Count; i++)
                {
                    DataRow drCu = (DataRow)list[i];
                    TableB.Rows.Remove(drCu);
                }
                Repeater1.DataSource = TableA;
                Repeater1.DataBind();            Repeater2.DataSource = TableB;
                Repeater2.DataBind();
      

  3.   

    keywords是varchar类型的,可以重复,articleid是int型的也可以重复
      

  4.   

    传统一点的方法
    DataTable dtA = new DataTable();
                DataTable dtB = new DataTable();
                dtA.Merge(dtB);
                var rows = dtA.Select(null, null, DataViewRowState.Added);//此处就是B中有,A中没有的数据,不过这种判定是以唯一id为标志滴
      

  5.   

    现代一点的方法DataTable dtA = new DataTable();
                DataTable dtB = new DataTable();
              var rows=  dtA.AsEnumerable().Where(c => !dtB.AsEnumerable().Contains(c));大体上如此,根据需要自己改改就成
      

  6.   

    看着改吧
    using System;
    using System.Data;
    using System.Configuration;
    using System.Collections;
    using System.Web;
    using System.Web.Security;
    using System.Web.UI;
    using System.Web.UI.WebControls;
    using System.Web.UI.WebControls.WebParts;
    using System.Web.UI.HtmlControls;public partial class TwoDataTable : System.Web.UI.Page
    {
        private DataTable dTA;
        public DataTable DTA
        {
            get { return dTA; }
            set { dTA = value; }
        }    private DataTable dTB;
        public DataTable DTB
        {
            get { return dTB; }
            set { dTB = value; }
        }    protected void Page_Load(object sender, EventArgs e)
        {
             
            DTA = new DataTable("cart");
            DataColumn dc1 = new DataColumn("KeyWords", Type.GetType("System.String"));
            DataColumn dc2 = new DataColumn("ArticleId", Type.GetType("System.Int32"));
            DTA.Columns.Add(dc1);
            DTA.Columns.Add(dc2);
            //以上代码完成了DataTable的构架,但是里面是没有任何数据的
            DataRow dr = DTA.NewRow();
            dr["KeyWords"] = "东风";
            dr["ArticleId"] = "1";
            DTA.Rows.Add(dr);
            dr = DTA.NewRow();
            dr["KeyWords"] = "联合卡车";
            dr["ArticleId"] = "2";
            DTA.Rows.Add(dr);
            dr = DTA.NewRow();
            dr["KeyWords"] = "皮卡";
            dr["ArticleId"] = "3";
            DTA.Rows.Add(dr);
            dr = DTA.NewRow();
            dr["KeyWords"] = "商用车";
            dr["ArticleId"] = "4";
            DTA.Rows.Add(dr);        DTB = new DataTable("cart");
            DataColumn dc3 = new DataColumn("KeyWords", Type.GetType("System.String"));
            DataColumn dc4=new DataColumn ("ArticleId",Type.GetType("System.Int32"));
            DTB.Columns.Add(dc3);
            DTB.Columns.Add(dc4);
            //以上代码完成了DataTable的构架,但是里面是没有任何数据的
            DataRow drr = DTB.NewRow();
            drr["KeyWords"] = "重卡";
            drr["ArticleId"] = "100";
            DTB.Rows.Add(drr);
            drr = DTB.NewRow();
            drr["KeyWords"] = "联合卡车";
            drr["ArticleId"] = "20";
            DTB.Rows.Add(drr);
            drr = DTB.NewRow();
            drr["KeyWords"] = "皮卡";
            drr["ArticleId"] = "3";
            DTB.Rows.Add(drr);
            drr = DTB.NewRow();
            drr["KeyWords"] = "商用车";
            drr["ArticleId"] = "4";
            DTB.Rows.Add(drr);        string dtaRowIndex = "";
            for (int i = 0; i < DTA.Rows.Count; i++)
            {
                DataRow dtaRow = DTA.Rows[i];
                for (int j = 0; j < DTB.Rows.Count; j++)
                {
                    DataRow dtbRow = DTB.Rows[j];
                    if (dtaRow["KeyWords"].ToString().Equals(dtbRow["KeyWords"].ToString()) && Convert.ToInt32(dtaRow["ArticleId"]) == Convert.ToInt32(dtbRow["ArticleId"]))
                    {
                        dtaRowIndex += i + ",";
                        DTB.Rows.Remove(dtbRow);
                        break;
                    }
                }
            }
           
            string[] dtaRowsIndex =dtaRowIndex.Trim().Split(',');
            for (int i = dtaRowsIndex.Length-1; i >=0; i--)
            {
                if (dtaRowsIndex[i].Trim() != "")
                {
                    DTA.Rows.Remove(DTA.Rows[Convert.ToInt32(dtaRowsIndex[i])]);
                }
            }
            //foreach (string s in dtaRowsIndex)
            //{
            //    if (s.Trim() != "")
            //    {
            //        DTA.Rows.Remove(DTA.Rows[Convert.ToInt32(s)]);
            //    }
            //}
        }    public static int StrToInt(string str)
        {
            return int.Parse(str);
        } 
    }
      

  7.   

    DataTable _Table1 = new DataTable("A1");
      _Table1.Columns.Add("A");  DataTable _Table2 = new DataTable("A2");
      _Table2.Columns.Add("B");  for (int i = 0; i != 1000; i++)
      {
      if (i <= 200) _Table2.Rows.Add(new object[] { i });
      _Table1.Rows.Add(new object[] { i });
      }  _Table2.PrimaryKey = new DataColumn[] { _Table2.Columns[0] };
      _Table1.PrimaryKey = new DataColumn[] { _Table1.Columns[0] };
      DataSet _Set = new DataSet();
      _Set.Tables.Add(_Table1);
      _Set.Tables.Add(_Table2);
      _Table1.ChildRelations.Add("a", _Table1.Columns[0], _Table2.Columns[0]);
      DataTable _NewTable = new DataTable();
      for (int i = 0; i != _Table1.Rows.Count; i++)
      {
      if (_Table1.Rows[i].GetChildRows("a").Length == 0)
      {
      _NewTable.ImportRow(_Table1.Rows[i]);
      }
        
      }或
    DataTable dt1 = new DataTable();
                DataTable dt2 = new DataTable();            var dt3 = from r in dt1.AsEnumerable()
                          where !(
                          from rr in dt2.AsEnumerable()
                          select rr.Field<int>("Id")
                          ).Contains(r.Field<int>("Id"))
                          select r;
      

  8.   

    两个二维数组,数组A和数组B,怎么能删除A和B中相同的数据,使数组A和数组B中存在对方不存在的数据????