IEnumerable コレクションがあります。LINQ を使用して、Web サービスの応答からコレクションを作成しています。以下は私が使用しているサンプルです。
lookupData = from data in content["data"].Children()
select new LookupData
{
LookupKey = (data["data"]["key"]).ToString(),
LookupValue = (string)data["data"]["name"]
};
キーと値を返す多くの同様の応答に同じコードを使用します。
ここで、いくつかの応答 (すべてではない) に対して、サービス応答から追加のフィールドが必要になったシナリオが得られました。そこで、「LookUpData」クラスに「Optional」プロパティを作成し、以下のように使用しました。
lookupData = from data in content["data"].Children()
select new LookupData
{
LookupKey = (data["data"]["key"]).ToString(),
LookupValue = (string)data["data"]["name"],
Optional = referenceConfig.Optional != null
? (data["data"]["optional"]).ToString()
: String.Empty
};
ここでの null チェックはパフォーマンスの問題です。他の条件があり、一緒に非常に大きな if else ループになるため、以下を使用したくありません。
if(referenceConfig.Optional != null){
lookupData = from data in content["data"].Children()
select new LookupData
{
LookupKey = (data["data"]["key"]).ToString(),
LookupValue = (string)data["data"]["name"],
Optional = (data["data"]["optional"]).ToString()
};
}
else{
lookupData = from data in content["data"].Children()
select new LookupData
{
LookupKey = (data["data"]["key"]).ToString(),
LookupValue = (string)data["data"]["name"]
};
}
しかし、それぞれに大量のデータを含む少なくとも 10 の Web サーバー応答があります。