这是两个datatable之间的查询 DataTable dt,dt1;
//dt 是一张表
//dt1是另外一张表
var query =
                from xmldata in dt.AsEnumerable()
                  join sqldata in dt1.AsEnumerable()
                on xmldata.Field<string>("ImgUrl") equals  //Notequals
                    sqldata.Field<string>("test")
                select new
                {
                    XmlDataImgName = xmldata.Field<string>("ImgUrl"),
                    XmlDataImgId = xmldata.Field<string>("Id"),
                    SqlDataName = sqldata.Field<int>("tid")
                };但我想用"Notequals"去做应该怎么写,是不是有别的关键字,请各位指教,谢谢!

解决方案 »

  1.   

                 on not xmldata.Field<string>("ImgUrl") equals  //Notequals
                        sqldata.Field<string>("test")试试看。
      

  2.   

                var _sa = from _sp in product.GetTable<ProductType>()
                          from _p in product.GetTable<Product>()
                          where  _sp.ptId != _p.ptId
                          select _sp;
      

  3.   

    join ... on 是连接关系呀
    你应该是在where里面判断Notequals
      

  4.   

    var _sa = from _sp in product.GetTable<ProductType>()
                          from _p in product.GetTable<Product>()
                          where  _sp.ptId != _p.ptId
                          select _sp;
    我希望是在DataTable对象里面操作的这样好像不行。
      

  5.   

    用!=试试
    xmldata["ImgUrl"].ToString()!=sqldata["test"].ToString()
      

  6.   

               DataTable dt1;
            DataTable dt2;        
     var _q = from a in dt1.AsEnumerable()
                         from b in dt2.AsEnumerable()
                         where a.Field<string>(1) != b.Field<string>(1)
                         select new
                         {
                             a = a.Field<string>(1),
                             b = b.Field<string>(1)
                         };
      

  7.   

               DataTable dt1;
            DataTable dt2;        
     var _q = from a in dt1.AsEnumerable()
                         from b in dt2.AsEnumerable()
                         where a.Field<string>(1) != b.Field<string>(1)
                         select new
                         {
                             a = a.Field<string>(1),
                             b = b.Field<string>(1)
                         };
    上面的代码可以运行但不是我要的结果
    我这里需要使用 join 关键字。
      

  8.   

    试试这个         var _q = from a in dt1.AsEnumerable()
                         join b in dt2.AsEnumerable() on true equals true
                         where a.Field<string>(1) != b.Field<string>(1)
                         select new
                         {
                             a = a.Field<string>(1),
                             b = b.Field<string>(1)
                         };
    不行就把table的值贴出来
    你想要什么样的值说明
      

  9.   

    dt表:
    Id         Nme Success ImgUrl 
    1800221416 vvv  true   aaa.jpg 
    1800221071 vvv  true   1.jpg 
    1800221164 vvv  true   2.jpg 
    180022584  vvv  true   5db3a55992f799e69e820450.jpg dt1表:
    tid test 
    1 aaa.jpg 
    2 1.jpg 
    3 2.jpg 
    我想要查看的数据是dt表中ImgUrl不在dt1表中test字段中出现的数据
    应该只有这条记录 180022584  vvv  true   5db3a55992f799e69e820450.jpg 
    因为我用了两种不同的数据源,所以我就把他们分别放在两个datatable里面进行操作了。
    请问怎么操作呢
      

  10.   

     DataTable dt1 = new DataTable();
                DataTable dt2 = new DataTable();            dt1.Columns.Add("id", typeof(int));
                dt1.Columns.Add("Nme");
                dt1.Columns.Add("Success", typeof(bool));
                dt1.Columns.Add("ImgUrl");            dt2.Columns.Add("tid", typeof(int));
                dt2.Columns.Add("test");            DataRow dr = dt1.NewRow();
                dr["id"] = 1800221416;
                dr["Nme"] = "vvv";
                dr["Success"] = true;
                dr["ImgUrl"] = "aaa.jpg";
                dt1.Rows.Add(dr);            dr = dt1.NewRow();
                dr["id"] = 1800221416;
                dr["Nme"] = "vvv";
                dr["Success"] = true;
                dr["ImgUrl"] = "1.jpg";
                dt1.Rows.Add(dr);            dr = dt1.NewRow();
                dr["id"] = 1800221416;
                dr["Nme"] = "vvv";
                dr["Success"] = true;
                dr["ImgUrl"] = "2.jpg";
                dt1.Rows.Add(dr);            dr = dt1.NewRow();
                dr["id"] = 1800221416;
                dr["Nme"] = "vvv";
                dr["Success"] = true;
                dr["ImgUrl"] = "5db3a55992f799e69e820450.jpg";
                dt1.Rows.Add(dr);            DataRow _dr2 = dt2.NewRow();
                _dr2["tid"] = 1;
                _dr2["test"] = "aaa.jpg";
                dt2.Rows.Add(_dr2);            _dr2 = dt2.NewRow();
                _dr2["tid"] = 2;
                _dr2["test"] = "1.jpg";
                dt2.Rows.Add(_dr2);            _dr2 = dt2.NewRow();
                _dr2["tid"] = 3;
                _dr2["test"] = "2.jpg";
                dt2.Rows.Add(_dr2);            var _q = from a in dt1.AsEnumerable()
                         where !(from b in dt2.AsEnumerable()
                                 select b.Field<string>("test")).Contains(a.Field<string>("ImgUrl"))
                         select new
                         {
                             id = a.Field<int>("id"),
                             Nme = a.Field<string>("Nme"),
                             Success = a.Field<bool>("Success"),
                             ImgUrl = a.Field<string>("ImgUrl")
                         };            foreach (var a in _q)
                {
                    Console.WriteLine(a.id.ToString() + "\n" + a.Nme + "\n" + a.Success + "\n" + a.ImgUrl);
                }
                Console.Read();