我正在使用以下Linq-to-XML將一些XML結構加載到我的數據結構中。是否有可能執行Linq將集合作爲HashSet而不是List返回?
// Load all the definitions
var definitions = doc.Descendants(Constants.ScriptNode)
.Select(x => new TcScriptDefinition
{
Application = x.Attribute(Constants.AppAttribute).Value,
CaseName = x.Attribute(Constants.CaseAttribute).Value,
ActionType = x.Attribute(Constants.ActionAttribute).Value,
ScriptUnit = x.Attribute(Constants.UnitAttribute).Value,
ScriptMethod = x.Attribute(Constants.MethodAttribute).Value,
Parameters = x.Descendants(Constants.ParamNode)
.Select(param => new TcScriptParameter
{
Code = param.Attribute(Constants.ParamCodeAttribute).Value,
ParameterNumber = Convert.ToInt32(param.Attribute(Constants.ParamOrderAttribute).Value),
DisplayString = param.Attribute(Constants.ParamDisplayAttribute).Value
})
.ToList()
})
.ToList();
的問題是,所述TcScriptDefinition.Parameters
被定義爲HashSet<TcScriptParameter>
因此ToList()
編譯失敗,因爲它返回一個List<T>
。
如何通過Linq將我的xml加載到HashSet<T>
?
我喜歡這兩種方法,但我會將其標記爲答案,因爲它不依賴於我創建擴展方法。 – KallDrexx
@KallDrexx:這就是我提到它的原因。我個人喜歡擴展方法(並且在我的擴展方法庫中),但有時候,像這樣一次性添加它也很好理解。 –