Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/23.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
C# 如何在Linq中连接具有逗号分隔值的列_C#_.net_Asp.net Mvc_Linq_Linq To Sql - Fatal编程技术网

C# 如何在Linq中连接具有逗号分隔值的列

C# 如何在Linq中连接具有逗号分隔值的列,c#,.net,asp.net-mvc,linq,linq-to-sql,C#,.net,Asp.net Mvc,Linq,Linq To Sql,我有一个主表类别 ID | Name ---------- 1 | Category1 2 | Category2 3 | Category3 4 | Category4 另一个表详细信息具有类似字段的属性 ID | CategoryId | Detail -------------------- 1 | 1,2,3 | Test1 2 | 3,4 | Test2 此处类别Id存储为逗号分隔的值。 现在我想要结果 ID | CategoryName ---

我有一个主表类别

ID | Name
----------
1  | Category1
2  | Category2
3  | Category3
4  | Category4
另一个表详细信息具有类似字段的属性

ID | CategoryId | Detail
--------------------
1  | 1,2,3      | Test1
2  | 3,4        | Test2
此处类别Id存储为逗号分隔的值。 现在我想要结果

ID | CategoryName
----------------
1  | Category1,Category2,Category3
2  | Category3,Category4
任何人都有想法....

您可以使用以下链接:

   private static void commaSeperate(List<classname> obj)
    {
        string delimeter = ",";
        Console.WriteLine(obj.Aggregate((i, j) => new classname { Name = (i.Name + delimeter + j.Name) }).Name);
        Console.ReadKey();
    }
私有静态无效通信操作(列表obj)
{
字符串delimeter=“,”;
WriteLine(obj.Aggregate((i,j)=>newclassname{Name=(i.Name+delimeter+j.Name)}).Name);
Console.ReadKey();
}
这只是一个示例,请根据您的条件进行修改


希望这会对您有所帮助。

如果我们先将数据检索到内存中,这可能是解决方案

var q = from d in Details
from m in Master
select new {Id = d.Id, CategoryName = String.Join(m.Where(i=> d.CategoryId.Split(',').Cast<int32>().Contains(i.Id).Select(i => i.Name).ToArray(), ',')}
var q=来自d的详细信息
我是硕士
选择新的{Id=d.Id,CategoryName=String.Join(m.Where(i=>d.CategoryId.Split(',').Cast().Contains(i.Id)。选择(i=>i.Name.ToArray(),','))

您无法联接这两个表,但我认为下面的查询将适用于您的结果:

(from de in datacontextobj.Details
from ca in datacontextobj.Category
where de.CategoryId.Contains(ca.ID)
select de.ID, ca.Name).ToList();

我强烈建议规范化您的数据。但我不能这样做,这是我的项目的要求。请与您的经理或技术负责人一起检查这些数据。这将在将来引发更多问题。作为一种解决方法,您可以创建一个拆分字符串函数,将字符串拆分为行,将它们与类别连接,然后再次将它们连接起来。但是这在SQL Server中已经完成。这只是解决您问题的一个方法。不是解决方案。好的,谢谢@evaldasbuinauskastash设计不应该是这样的。我建议,数据应该是从中规范化的。因为这会产生许多问题。我收到的错误类似于字符串的无效参数。Join@ToniJep,因为这仅在中有效-内存查询。也就是说,您必须提前检索主数据和详细数据(作为公共列表)并对这些列表进行操作。但我需要逗号分隔的类别名称@ShilpaSoniCan您发布我的查询返回的内容吗?