c#从列表中找到linq到列表中的项目

c#从列表中找到linq到列表中的项目

问题描述:

想知道如何获得像这样的工作?c#从列表中找到linq到列表中的项目

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

Modules是一个列表。

+0

这是不正确的,因为ToArray的是一个方法调用 – devdigital 2013-04-21 09:59:56

+0

事实上,在第二一目了然尝试'.ToArray();' - 注意括号。 – Tim 2013-04-21 10:00:01

+0

@devdigital - 是的...我注意到,当我再次看。 :) – Tim 2013-04-21 10:00:37

假设你发布的是你的实际代码,你错过了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(); 
+0

刚刚添加括号(哎呀:/)但我仍然得到一个错误http://www.kennyist.com/stackover/Untitled.png – Kennyist 2013-04-21 10:05:26

+0

@Kennyist - 给我一秒钟,我会更新我的答案。 – Tim 2013-04-21 10:06:46

+0

根据.png文件,“moduls”中的列表没有初始化,这就是为什么你有NullException。 – Wasafa1 2013-04-21 10:08:15

问题是该方法返回类型。

可以通过声明

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

明确使用或魔法字使用超好看的C#的类型推断:

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

+1提及使用'var'。我通常更喜欢在可以的时候明确表达,但是很多开发者喜欢'var'。 – Tim 2013-04-21 10:16:42

modules是在你的代码Module类型。您的editListMod类型为string[],因此编译器告诉您它不能将其隐式转换为Module[]。为了解决这个问题,请尝试:

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