将linq转换为c#

时间:2014-02-06 16:41:24

标签: c# linq

我是linq的新手,很难从linq转换为c#。

private static char[] createCharArray(int length, char defaultChar)
{
    return (from c in new char[length] select defaultChar).ToArray();
}

有什么帮助吗?

4 个答案:

答案 0 :(得分:2)

看起来您正在尝试创建给定长度的char[](数组)并使用指定字符预填充它。如果是这种情况,那么您已经拥有的代码是完全有效的C#,因此您无需进行任何更改。

就个人而言,我更愿意使用以下LINQ:

private static char[] createCharArray(int length, char defaultChar) 
{ 
    return Enumerable.Repeat(defaultChar, length).ToArray(); 
}

但是,如果您的问题是将LINQ语句转换为非LINQ版本,因为无论出于何种原因您无法使用LINQ,那么您可以使用简单的for循环:

private static char[] createCharArray(int length, char defaultChar) 
{ 
    char[] result = new char[length];
    for(int i = 0; i < length; i++)
    {
        result[i] = defaultChar;
    } 
    return result;
}

注意:作为警告,C#中的函数名称通常按惯例以大写开头,即CreateCharArray

答案 1 :(得分:2)

首先LINQ是C#。你的代码正在做什么,

创建一个字符数组,所有元素都设置为默认字符。

因此,如果您指定了length = 10,您将获得10个元素的字符数组,所有数组元素都设置为defaultChar

与:

相同
char defaultChar = 'A';
int length = 10;
char[] charArray = new char[length];
for (int i = 0; i < charArray.Length; i++)
{
    charArray[i] = defaultChar;
}

或者可以这样做:

char[] charArray = Enumerable.Repeat<char>(defaultChar, length).ToArray();

你也可以使用ToCharArray之类的字符串构造函数来执行相同操作:

char[] charArray = new string(defaultChar, length).ToCharArray();

答案 2 :(得分:1)

试试这个:

private static char[] createCharArray(int length, char defaultChar)
{
    return new string(defaultChar, length).ToCharArray();
}

答案 3 :(得分:0)

private static char[] createCharArray(int length, char defaultChar)
{
    string ret = "";
    for (int i = 0; i < length; i++)
        ret += defaultChar;
    return ret.ToArray();
}