相关疑难解决方法(0)

内存/加入字符串数组的LINQ方法是什么?

我有以下字符串数组:

var sa = new string[] {"yabba","dabba","doo"};
Run Code Online (Sandbox Code Playgroud)

我可以使用string.Join()将它转换为"yabba,dabba,doo"但是这样做的超酷LINQ方式是什么?Join扩展方法似乎很有希望,但对于像我这样的新手来说非常困惑.

.net linq string

46
推荐指数
0
解决办法
3万
查看次数

用于IEnumerable <T>的String.Join(string,string [])的模拟

class String包含非常有用的方法 - String.Join(string, string[]).

它从数组创建一个字符串,用给定的符号分隔数组的每个元素.但一般 - 它不会在最后一个元素后添加分隔符!我将它用于ASP.NET编码,用<br />"或"分隔Environment.NewLine.

所以我想在每行之后添加一个空行asp:Table.我IEnumerable<TableRow>可以使用哪种方法来实现相同的功能?

c# linq ienumerable extension-methods

7
推荐指数
3
解决办法
4383
查看次数

挑战:更好的方式来讨论或部分应用C#4的弦乐.加入

背景

我最近读到.NET 4的System.String类有一个新的Join方法重载.这个新的重载采用了一个分隔符,IEnumerable<T>它允许将任意集合连接成一个字符串,而无需转换为中间字符串数组.

凉!这意味着我现在可以这样做:

var evenNums = Enumerable.Range(1, 100)
    .Where(i => i%2 == 0);
var list = string.Join(",",evenNums);
Run Code Online (Sandbox Code Playgroud)

......而不是这个:

var evenNums = Enumerable.Range(1, 100)
    .Where(i => i%2 == 0)
    .Select(i => i.ToString())
    .ToArray();
var list = string.Join(",", evenNums);
Run Code Online (Sandbox Code Playgroud)

...因此节省了将每个项目转换为字符串,然后分配数组.

问题

但是,作为一般编程功能样式的粉丝,特别是C#中的方法链接,我宁愿能够写出这样的东西:

var list = Enumerable.Range(1, 100)
    .Where(i => i%2 == 0)
    .string.Join(",");
Run Code Online (Sandbox Code Playgroud)

这不是合法的C#.是的,我可以这样做Enumerable.Aggregate,是的,我可以使用我自己的Join扩展方法实现它,但是这些方法难以阅读/效率低下并感觉像是一个警察(分别),所以我想尝试做它是一种不同的方式.我到目前为止最接近的是这样的:

var list = Enumerable.Range(1, 100)
    .Where(i => i%2 == 0)
    .ApplyTo(
        Functional.Curry<string, IEnumerable<object>, string>
            (string.Join)(",")
    );
Run Code Online (Sandbox Code Playgroud)

...使用以下扩展方法:

public …
Run Code Online (Sandbox Code Playgroud)

c# linq functional-programming currying

6
推荐指数
1
解决办法
397
查看次数

Linq to SQL用分隔符追加多个记录

对于问题的不良标题,如果它是重复的,请道歉.

我有两个数据库表:

Users                 Documents
-------               --------- 
ID                    ID
Name                  DocumentName
                      UserID
Run Code Online (Sandbox Code Playgroud)

说我有1条记录 Users

1, "bob" 
Run Code Online (Sandbox Code Playgroud)

和三个相关的记录 Documents

1, "Doc1", 1
2, "Doc2", 1
3, "Doc3", 1
Run Code Online (Sandbox Code Playgroud)

我想生成一个结果集:

1, "bob", "Doc1, Doc2, Doc3"
Run Code Online (Sandbox Code Playgroud)

我尝试过涉及合并多个结果集的各种事情但得到错误: Local sequence cannot be used in LINQ to SQL implementation of query operators except the Contains() operator.

我应该怎么做呢.

.net c# linq-to-sql

4
推荐指数
1
解决办法
1012
查看次数