c#从列表中找到linq到列表中的项目
想知道如何获得像这样的工作?c#从列表中找到linq到列表中的项目
void EditListUpdate(int id)
{
string[] editListMod = modules.Where(x => x.Id == id).ToArray();
}
Modules是一个列表。
假设你发布的是你的实际代码,你错过了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[]'
你需要从string[]
改变editListMod
类型stageManagement.Module[]
。您的LINQ语句将选择所有具有匹配ID的stageManagement.Module
对象。
换句话说:
Module[] editListMod = modules.Where(x => x.Id == id).ToArray();
问题是该方法返回类型。
可以通过声明
Module[] editListMod = modules.Where(x => x.Id == id).ToArray();
明确使用或魔法字使用超好看的C#的类型推断:
var editListMod = modules.Where(x => x.Id == id).ToArray();
+1提及使用'var'。我通常更喜欢在可以的时候明确表达,但是很多开发者喜欢'var'。 – Tim 2013-04-21 10:16:42
modules
是在你的代码Module
类型。您的editListMod
类型为string[]
,因此编译器告诉您它不能将其隐式转换为Module[]
。为了解决这个问题,请尝试:
Module[] editListMod = modules.Where(x => x.Id == id).ToArray();
这是不正确的,因为ToArray的是一个方法调用 – devdigital 2013-04-21 09:59:56
事实上,在第二一目了然尝试'.ToArray();' - 注意括号。 – Tim 2013-04-21 10:00:01
@devdigital - 是的...我注意到,当我再次看。 :) – Tim 2013-04-21 10:00:37