所以我有這些部分類。請參閱下面的部分實現ParseFCIE和我的問題。 ParseFCIE的詞典和SelectMany()
class CiscoSwitch
{
Dictionary<int, CiscoVSAN> VSANList = new Dictionary<int, CiscoVSAN>();
public void ParseFCIE(string block)
{}
}
class CiscoVSAN
{
Dictionary<string, CiscoSwitch> MemberSwitches = new Dictionary<string, CiscoSwitch>();
}
部分是檢查在輸入數據的傳入開關是否已在任何CiscoVSAN對象的SwitchMembers辭典,如果沒有,添加它。我有2個字典語句。第一條語句有效,第二條語句編譯器說它不能確定謂詞的類型,我不知道爲什麼。我更喜歡第二個聲明,因爲它只是一步。搜索交換機的第一種方法是檢查搜索結果的空值。
ParseFCIE(string block)
{
string DID = string.Empty;
//partial implementation
// 'this' is a CiscoSwitch object
//this works
var vsans= this.VSANList.SelectMany(v => v.Value.MemberSwitches.
Where(d => d.Value.switchName == this.switchName));
// assume DID now has a value;
// this line the compiler says the type arguments cannot be inferred from usage
if (this.VSANList.SelectMany(v => v.Value.MemberSwitches.ContainsKey(DID)))
{}
}
感謝您的解釋。這就說得通了。 –