c#使用linq从列表中查找项目到数组

时间:2013-04-21 09:57:23

标签: c# arrays string linq

只是想知道如何让这样的东西起作用?

void EditListUpdate(int id)
    {
        string[] editListMod = modules.Where(x => x.Id == id).ToArray();
    }

模块是一个列表。

3 个答案:

答案 0 :(得分:2)

问题是方法返回的类型。

您可以通过声明

明确使用
 Module[] editListMod = modules.Where(x => x.Id == id).ToArray();

或使用魔术词的超好c#类型推断:

 var editListMod = modules.Where(x => x.Id == id).ToArray();

答案 1 :(得分:1)

假设您发布的内容是您的实际代码,则错过了ToArray上的括号。 ToArray()是方法调用。

string[] editListMod = modules.Where(x => x.Id == id).ToArray();

这应解决您看到的错误(Cannot convert method group 'ToArray' to non-delegate type 'string[]'. Did you intend to invoke the method?

<强>更新

您是新错误:Cannot implicitly convert type 'stageManagement.Module[]' to string[]'

您需要将editListMod的类型从string[]更改为stageManagement.Module[]。您的LINQ语句将选择具有匹配ID的所有stageManagement.Module个对象。

换句话说:

Module[] editListMod = modules.Where(x => x.Id == id).ToArray();

答案 2 :(得分:1)

modules在您的代码中属于Module类型。您的editListMod类型为string[],因此编译器会告诉您它无法将其隐式转换为Module[]类型。要解决此问题,请尝试:

Module[] editListMod = modules.Where(x => x.Id == id).ToArray();