MasterData
Id :姓名
中部时间1:00
东部地区2%
东区中部3号
4.东部沿海地区
5.北上
西北地区6个月
7月份,中国南部
8点,位于中南部
9点到西部
接收的数据
Id :其名称和价值
1%,中央银行,125.65
5%的中国北方地区: 553.21。
我希望结果如下所示
Id **名称*值
1* 125.65 *
*
3%,东部中部地区,3%,3%,40.0%。
4%;东部沿海地区;30.0%;
5%的中国北方地区: 553.21 %的人。
6%的西北部地区,70.0%的地区。
7%的韩国人,7%的人和0.0的人
8%,中南地区:8%,10%。
9:00,西部:10:00,10:00
请注意,所有数据都是数据表,如何获取结果
发布于 2013-04-01 19:01:34
假设您的DataTable声明如下:
var dt1 = new DataTable();
dt1.Columns.Add(new DataColumn("Id", typeof(int)));
dt1.Columns.Add(new DataColumn("Name", typeof(string)));
var dt2 = new DataTable();
dt2.Columns.Add(new DataColumn("Id", typeof(int)));
dt2.Columns.Add(new DataColumn("Name", typeof(string)));
dt2.Columns.Add(new DataColumn("Value", typeof(double)));您可以使用LINQ to objects加入它并获得您想要的内容:
var query = from r1 in dt1.AsEnumerable()
join r2 in dt2.AsEnumerable() on r1.Field<int>("Id") equals r2.Field<int>("Id") into r3
from r4 in r3.DefaultIfEmpty()
select new
{
Id = r1.Field<int>("Id"),
Name = r1.Field<string>("Name"),
Value = r4 == null ? 0.00 : r4.Field<double>("Value")
};有了这个IEnumerable<Anonymous_Type>,您就可以使用ToDataTable<T>扩展方法来获取DataTable对象:
public static class EnumerableToDataTableConverter
{
public static DataTable ToDataTable<T>(this IEnumerable<T> items)
{
DataTable dataTable = new DataTable(typeof(T).Name);
//Get all the properties
PropertyInfo[] Props = typeof(T).GetProperties(BindingFlags.Public | BindingFlags.Instance);
foreach (PropertyInfo prop in Props)
{
//Setting column names as Property names
dataTable.Columns.Add(prop.Name);
}
foreach (T item in items)
{
var newRow = dataTable.NewRow();
for (int i = 0; i < Props.Length; i++)
{
//inserting property values to datatable rows
newRow[Props[i].Name] = Props[i].GetValue(item, null);
}
dataTable.Rows.Add(newRow);
}
//put a breakpoint here and check datatable
return dataTable;
}
}您可以通过以下语句从query获取DataTable:
var result = query.ToDataTable();https://stackoverflow.com/questions/15741843
复制相似问题