我有下面的結構是對我的字典中的密鑰不能使用==:在LINQ擴展方法
public struct CodeAttribute
{
public int ProcessorId;
public Enums.TransactionType transactionType;
public string ErrorMessage;
}
我有以下字典(一個值作爲現在它只是爲例):
var errors = new Dictionary<CodeAttribute, int>
{
{CreateCodeAttributeList(2, Enums.TransactionType.Order, "Invalid ProcessorId sent in the Payment Request"), 100 }
};
而且我試圖拔出項上有兩個其ProcessorId和TRANSACTIONTYPE特性匹配的結構相匹配的字典:
private static string GetRelatedMessage(int errorCode, Dictionary<CodeAttribute, int> errorsList)
{
CodeAttribute codeAttribute = errorsList.Where(e => e.Key.ProcessorId == _processorId)
.Where(e => e.Key.transactionType == _transactionType) == errorCode;
return codeAttribute.ErrorMessage;
}
我也想匹配錯誤代碼作爲過濾的一部分,而不僅僅是paymentprocessorId和transactionType,只是一個附註。字典中的項目必須匹配所有3個值才能在我們的案例中獲得正確的值。
UPDATE
我想這個問題,以及,是的,我得到它不能轉換IEnumerable的到CodeAtribute
CodeAttribute codeAttributes = errorsList.Where(e => e.Key.ProcessorId == _processorId)
.Where(e => e.Key.transactionType == _transactionType)
.Where(e => e.Value.Equals(errorCode));
UPDATE
與山姆的幫助下,我認爲這個錯誤可能工作
CodeAttribute codeAttribute = errorsList.FirstOrDefault(e => e.Key.ProcessorId ==
_processorId && e.Key.transactionType == _transactionType
&& e.Value == errorCode).Key;
你會得到什麼錯誤? – MarcinJuraszek
'where where子句返回'IEnumerable'不是單個值 – Grundy
什麼是Where(e => e.Key.transactionType == _transactionType)== errorCode'應該表示什麼? – SLaks