代码之家  ›  专栏  ›  技术社区  ›  Matthew Dresser

是否存在与string等效的LINQ。Join(string,string[])[重复]

  •  19
  • Matthew Dresser  · 技术社区  · 17 年前

    我想在另一个LINQ to SQL表达式中使用它。

    4 回复  |  直到 17 年前
        1
  •  27
  •   bruno conde    17 年前

    string.Join

    string.Join("<br/>", collection.Select(e => e.TextProp));
    
        2
  •  15
  •   Scott Ivey    13 年前

    您可以使用Aggregate方法。..

    var myResults = (from myString in MyStrings
                     select myString)
                    .Aggregate(string.Empty, (results, nextString) 
                       => string.Format("{0}<br />{1}", results, nextString));
    

    var myResults = MyStrings.Aggregate(string.Empty, (results, nextString) 
                       => string.Format("{0}<br />{1}", results, nextString));
    
        3
  •  9
  •   Jon Skeet    17 年前

    Aggregate , Sum , Average 等等),但这完全取决于类型和你想做什么。你对哪种类型感兴趣?

    编辑:好的,所以你想连接字符串。..我没有 思考 LINQ to SQL本身中有任何东西可以做到这一点。选项:

    • 用SQL编写一个存储过程或TVF来实现
    • 在LINQ to SQL中获取各个字符串,并在客户端连接回来
        4
  •  7
  •   Damian Powell    16 年前

    string.Join(", ", arrayOfStrings) IEnumerable<T>

    var names = new [] { "Fred", "Barney", "Wilma", "Betty" };
    var list = names
        .Where(n => n.Contains("e"))
        .Join(", ");
    

    public static string Join<TItem,TSep>( 
        this IEnumerable<TItem> enuml, 
        TSep                    separator) 
    { 
        if (null == enuml) return string.Empty; 
    
        var sb = new StringBuilder(); 
    
        using (var enumr = enuml.GetEnumerator()) 
        { 
            if (null != enumr && enumr.MoveNext()) 
            { 
                sb.Append(enumr.Current); 
                while (enumr.MoveNext()) 
                { 
                    sb.Append(separator).Append(enumr.Current); 
                } 
            } 
        } 
    
        return sb.ToString(); 
    }