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));
}
}
}
------解决方案--------------------
谢谢分享