【问题标题】:How to concatenate multiple fields when we use Entity Framework dbContext? [duplicate]使用 Entity Framework dbContext 时如何连接多个字段? [复制]
【发布时间】:2016-12-08 21:44:01
【问题描述】:

我需要连接 4 个字段并使用 | 分隔符显示为单个字段。我试过string.Concat(),但没用。也尝试使用string.Join(),但无法使用。

var result = dbContext.MyEntity
                      .Where(me=> me.field1!= null && me.field2 != null)
                      .Select(me => new MyViewModelClass()
                                        {
                                           Field1 = me.field1,
                                           Field2 = me.field2,
                                           Field3 = me.field3,
                                           Field4 = me.field4,
                                           Field5 = me.field5,
                                           Field6 = me.field6,    
                                           // I need to concatenate field3, field4, field 5, field 6 by "|" separator.                 
                                           Field = string.Concat("|", me.field3, me.field4, me.field5, me.field6)
                                       });
return result;

有什么建议吗?

谢谢,

【问题讨论】:

  • 你能告诉我们你得到什么错误信息吗?
  • 没用无法使用。您已经工作了将近 6 年,但您仍然不知道如何充分描述一个问题?

标签: c# entity-framework


【解决方案1】:

您需要在 WhereSelect 子句之间放置一个 .ToList(),以便 LINQ 使用 LINQ-to-Objects 提供程序(可以使用 C# 字符串方法)而不是 LINQ-to -实体提供者(不能,因为它试图将其转换为 SQL 查询)。

您的代码将如下所示:

var result = dbContext.MyEntity
             .Where(me=> me.field1 != null && me.field2 != null)
             .ToList()
             .Select(me => 
                new MyViewModelClass()
                {
                  Field1 = me.field1,
                  Field2 = me.field2,
                  Field3 = me.field3,
                  Field4 = me.field4,
                  Field5 = me.field5,
                  Field6 = me.field6,    
                  Field = string.Concat("|", me.field3, me.field4, me.field5, me.field6)
                }
              );

【讨论】:

    【解决方案2】:

    更新 请遵循 @IronMan84 的建议并应用 .ToList()。另外如果你想更高效,可以使用string.format

    Field = string.Format("{0}|{1}|{2}|{3}",me.field3,me.field4,me.field5,me.field6);
    

    如果您使用的是 c# 6.0 (.NET Framework >= 4.6.1),那么您可以使用

    Field = $("{me.field3}|{me.field4}|{me.field5}|{me.field6}");
    

    【讨论】:

      【解决方案3】:
         var result= dbContext.MyEntity.Where(me=> me.field1!= null && me.field2 != null).Select(me=>
              new MyViewModelClass()
              {
                  Field1= me.field1,
                  Field2= me.field2,
                  Field3= me.field3,
                  Field4= me.field4,
                  Field5= me.field5,
                  Field6= me.field6,    
      
                  //I need to concatenate field3, field4, field 5, field 6 by "|" separator.                 
      
                  Field=  string.Concat("|",me.field3).Concat("|")
                                .Concat(field4).Concat("|")
                                .Concat(field5).Concat("|")
                                .Concat(field6)
      
              });
          return result;
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2019-12-02
        • 1970-01-01
        • 2020-12-07
        • 2022-11-21
        • 1970-01-01
        • 2011-02-24
        • 2014-05-04
        • 1970-01-01
        相关资源
        最近更新 更多