我不确定 array.where()的工作方式是否正确。
我有一个充满Spectrum.cs对象的数组。每个频谱都包含一个文件名属性。

mySpectrum.filename;//字符串

现在,我有一个字符串值,我想与数组中的每个对象进行比较以找出它是否具有相同的文件名。据我所知,它应该像这样工作:

Spectrum bgSpec = new Spectrum(); //Has a filename
Spectrum[] currentSpectra;  //Array filled with Spectra

//Somehow this doesn't seem to work. Propably due to the returnvalue for where() which seems //to be IEnumerable.
Spectrum tempSpectrum = currentSpectra.Where<Spectrum>(c => c.filename == bgSpec);

我可能把所有事情都弄错了,如果有人能指出它是什么或如何正确做,我将不胜感激。

提前致谢,
公元前++

最佳答案

看起来您正在寻找满足该条件的单个值。因此,也许使用 Single :

var tempSpectrum = currentSpectra.Single(c => c.filename == bgSpec.filename);

其他选项:
  • First
  • FirstOrDefault
  • SingleOrDefault
  • Last
  • LastOrDefault

  • 如果没有匹配的元素,则OrDefault版本将返回nullFirstSingleLast之间的区别在于多次匹配的结果:Single将引发异常,而FirstLast将分别采用第一个或最后一个匹配项。

    其中最合适的将取决于您要做什么。

    关于c# - 究竟如何使用array.where?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/10753160/

    10-12 12:42
    查看更多