LINQ使用行索引/数字连接多个表

时间:2013-12-01 06:02:31

标签: c# linq

我有一个用于将记录上传到数据库的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列是从第一个工作表/数据表中引用的,但我不知道如何。有任何想法或任何其他方式来解决这个问题吗?

感谢。

0 个答案:

没有答案
相关问题