Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/linq/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
具有不同数据类型的LINQ连接_Linq - Fatal编程技术网

具有不同数据类型的LINQ连接

具有不同数据类型的LINQ连接,linq,Linq,我有一种情况,我试图在两个表上进行连接 表一的内容如下: User ID john 1 mary 3 tim 4 表2有以下内容:(注意表2中的ID是逗号分隔的。注意表2中的每个ID都是唯一的。) 正如您在表2的第一行中所看到的,与用户tim匹配,因为他们都有4个,所以公司100是关联的 问题在于LINQ,我不知道如何在这两个表之间进行连接 您可以拆分公司表ID,并将其格式化为更可读的列表: var companiesReadable

我有一种情况,我试图在两个表上进行连接

表一的内容如下:

 User       ID
 john       1 
 mary       3
 tim        4
表2有以下内容:(注意表2中的ID是逗号分隔的。注意表2中的每个ID都是唯一的。)

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


问题在于LINQ,我不知道如何在这两个表之间进行连接

您可以拆分公司表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});

希望它能有所帮助

尝试使用类似于使用单引号的
like
子句之类的方法

var res = from Table1
join Table2 
on SqlMethods.Like(Table1.Id , '\'' + Table2.Id + '\'')
select ....
我无法测试这一点,但我的答案是基于


如果linq to sql

要清除,表2有一个逗号分隔的值列表,应该可以工作吗?是的,这是正确的。这是现有系统还是新系统?如果是新的,为什么不为这种固有的多对多关系使用一个中间映射表呢?这是一个现有的系统。表2中的每个ID都是唯一的。您最好创建一个能够更好地规范表2中数据的视图。
var res = from Table1
join Table2 
on SqlMethods.Like(Table1.Id , '\'' + Table2.Id + '\'')
select ....