2017-04-06 83 views
0

我在那里我试图做2个表的联接的情况。LINQ JOIN不同数据类型

表一个具有以下:

User  ID 
john  1 
mary  3 
tim  4 

表2有以下:(注意在表2中以逗号分隔的ID应注意,在表2中的每个ID是唯一的)

company   ID 
100   '150', '4', '9' 
101   '102','2', '10' 

正如您在表2的第一行所看到的那样,与用户tim有匹配,因为他们都有4个,所以与公司100相关联。

问题是与LINQ我不知道该怎么办这两个表之间的连接。

+0

需要明确的是,表2有一个逗号分隔值列表? –

+0

是的,这是正确的。 –

+0

这是一个现有的系统或新的东西?如果是新的,为什么不用中间映射表来实现这种内在的多对多关系? –

回答

0

您可以分割你的企业中的表ID,并将它们格式化成更易读的列表:

var companiesReadableList = 
      companies.SelectMany(x => x.ID.Replace("'", "").Split(',').Select(y => new {ID = y.Trim(), company = x.company})); 

,所有剩下的就是加入用户表:

var joinedView = users.Join(companiesReadableList, user => user.ID.ToString(), company => company.ID, 
      (user, company) => new {user.user, user.ID, company.company}); 

希望它有助于

0

试像使用like条款与单引号

var res = from Table1 
join Table2 
on SqlMethods.Like(Table1.Id , '\'' + Table2.Id + '\'') 
select .... 

我不能对此进行测试,但我根据我对this

答案应该工作,如果LINQ到SQL