我有一个用于将记录上传到数据库的Excel模板,它有多张表。 我可以使用LINQ在上传时加入工作表的数据,这是我的代码:
var query = from component in ds.Tables[0].AsEnumerable()
join componenthazardous in ds.Tables[1].AsEnumerable()
on component.Field<string>("PartNumber")
equals componenthazardous.Field<string>("PartNumber")
join manufacturers in ds.Tables[2].AsEnumerable()
on component.Field<string>("PartNumber")
equals manufacturers.Field<string>("PartNumber")
join vendorinfo in ds.Tables[3].AsEnumerable()
on component.Field<string>("PartNumber")
equals vendorinfo.Field<string>("PartNumber")
join crossreference in ds.Tables[4].AsEnumerable()
on component.Field<string>("PartNumber")
equals crossreference.Field<string>("PartNumber")
select new {
PartNumber = component["PartNumber"].ToString(),
Description = component["Description"].ToString(),
Hazardous = componenthazardous["Hazardous"].ToString(),
M_MfgrCode = manufacturers["MfgrCode"].ToString(),
M_MfgrName = manufacturers["MfgrName"].ToString(),
M_Status = manufacturers["Status"].ToString(),
M_AsOf = manufacturers["AsOf"].ToString(),
M_Remarks = manufacturers["Remarks"].ToString()
};
现在,我的问题是我的老板突然改变了要求。在excel模板上,我用来连接表的密钥是重复的。它的独特性将基于PartNumber和MfgrName的组合。如果只有一个工作表具有这些行列,如何使用此组合作为键来连接表?
我的想法是,我将使用行号作为我的加入键,因为其他工作表上的partnumber列是从第一个工作表/数据表中引用的,但我不知道如何。有任何想法或任何其他方式来解决这个问题吗?
感谢。