我不确定 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
版本将返回null
。 First
,Single
和Last
之间的区别在于多次匹配的结果:Single
将引发异常,而First
或Last
将分别采用第一个或最后一个匹配项。其中最合适的将取决于您要做什么。
关于c# - 究竟如何使用array.where?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/10753160/