如何将Linq中的字符串数组转换为实体?

时间:2013-11-15 15:21:07

标签: c# string linq entity-framework linq-to-entities

我有下面的linq查询

var dd = (from dt in d
          select new
          {
              dt.id,
              dt.date,
              dt.customerid,
              dt.customer,
              dt.Description,
              dt.defect,
              dt.address,
              products = string.Join(",", dt.products)
          }).ToList();

string.Join无效,错误是

  

LINQ to Entities无法识别该方法       'System.String Format(System.String, System.Object, System.Object)'

我谷歌搜索了很多,找不到任何其他解决方案。我想要做的是,dt.Products是一个数组,我想在一个字符串中将它们连接在一起。在Linq to Entities中是否可能?

1 个答案:

答案 0 :(得分:6)

您将无法在查询中执行此操作,但您可以先通过调用.AsEnumerable()在内存中执行此操作。试试这个:

var dd = 
    (from dt in d
     select new
     {
         dt.id,
         dt.date,
         dt.customerid,
         dt.customer,
         dt.Description,
         dt.defect,
         dt.address,
         dt.products
     })
    .AsEnumerable()
    .Select(dt => new {
         dt.id,
         dt.date,
         dt.customerid,
         dt.customer,
         dt.Description,
         dt.defect,
         dt.address,
         products = string.Join(",", dt.products)
    }).ToList();

但请注意,如果您的数据集特别大,则可能会对性能产生显着影响。