如何在Linq中使用具有逗号分隔值的列进行连接

时间:2015-09-08 05:34:05

标签: 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
----------------
1  | Category1,Category2,Category3
2  | Category3,Category4

AnyOne有想法.. ??

3 个答案:

答案 0 :(得分:0)

您可以使用链接:

   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();
    }

这只是一个样本,请根据您的条件进行修改。

希望这会对你有所帮助。

答案 1 :(得分:0)

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

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(), ',')}

答案 2 :(得分:0)

您无法加入这两个表,但我认为以下查询适用于您的结果:

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