首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > .NET >

linq to datatable 查询有关问题

2012-09-23 
linq to datatable 查询问题表结构是这样的表1:idOb_induIDID行业id表2:Ob_induIDIndu_name行业id行业名称

linq to datatable 查询问题
表结构是这样的
表1:
id Ob_induID  
ID 行业id

表2:
 Ob_induID Indu_name
行业id 行业名称

要达到的效果是
表3
id Indu_name
ID 行业名称
这个是我写的代码
  DataTable b = GetORG();
  var query = a.Select();
  DataTable table = new DataTable();
  table.Columns.Add("Id", typeof(int));
  table.Columns.Add("Indu_name", typeof(string));
  foreach (var item in query)
  {
  DataRow newrow = table.NewRow();
  newrow["id"] = item[0];
  var s = b.Select().SingleOrDefault(c => c[0] ==item[1]);//但是在这里都有问题
  if (s == null)
  {
  newrow["org_uniname"] = "null";
  }
  else
  {
  newrow["org_uniname"] = s.Table.Rows[query.Count()][1];
  }
  table.Rows.Add(newrow); 
  }
  return table;
  }
  else { return null; }


只能用datatable 查询 
希望大家能帮忙解决一下



[解决办法]
下面代码演示Join的用法,T1和T2通过T1.IID == T2.ID关联起来,类似数据库中的FK和PK。然后选择T1.ID和T2.Name组成新类型T3(不用定义,会自动生成的)。

理解一下换成你所需要的DataTable应该就可以了。

C# code
class CJoin    {        class T1        {            public int ID { get; set; }            public int IID { get; set; }        }        class T2        {            public int ID { get; set; }            public string Name { get; set; }        }        static void Test()        {            List<T1> data1 = new List<T1>();            List<T2> data2 = new List<T2>();            for (int i = 1; i <= 10; i++)            {                data1.Add(new T1 {ID = i * 10, IID = i});                data2.Add(new T2 { ID = i, Name = "Dept " + i });            }            var query = from a in data1                        join b in data2 on a.IID equals b.ID                        select new { ID = a.ID, Name = b.Name };            foreach (var item in query)            {                Trace.WriteLine(string.Format("ID: {0}, Name: {1}", item.ID, item.Name));            }        }    }
[解决办法]
谢谢分享

热点排行