LINQで実行した方がよいとわかっているコードがいくつかありますが、LINQコードがどのようになるかわかりません。
私はGoodsItemsのコレクションを持っています、このアイテムのそれぞれにコメントのコレクションがあります、そしてこれらのコメントのいくつかは私がフィルターで除外して単一の文字列行に変えたいです。
コードは次のとおりです。
//-- get all comments that is of type "GoodsDescription"
ICollection<FreeText> comments = new List<FreeText>();
foreach (DSV.Services.Shared.CDM.Shared.V2.GoodsItem goodsItem in shipmentInstructionMessage.ShipmentInstruction.ShipmentDetails.GoodsItems)
{
ICollection<DSV.Services.Shared.CDM.Shared.V2.FreeText> freeTexts = goodsItem.Comments.Where(c => c.Type.ToLower() == FREETEXT_TYPE_GOODSDESCRIPTION.ToLower()).ToList();
foreach (DSV.Services.Shared.CDM.Shared.V2.FreeText freeText in freeTexts)
comments.Add(FreeText.CreateFreeTextFromCDMFreeText(freeText));
}
//-- Turn this collection of comments into a single string line
StringBuilder sb = new StringBuilder();
foreach (FreeText comment in comments)
sb.Append(comment.ToString());
contents = sb.ToString();
最初のForeachはすべての商品アイテムをループし、各商品アイテムについて、コメントのタイプが定義された値と等しいすべてのコメントを取得します。
次に、取得したこのコメントごとに、新しいオブジェクトを作成して、CommentsCollectionに追加します。
そして最後に、このcommentsColletionをループして、すべてのデータを1つの文字列行に作成します。
LINQを使用してこれを行うには、より優れたスマートな方法が必要です。
ありがとう...