私ができるようにしたいのは、searchValues リストで重複する itemId を検索し、それらが見つかったら、単一の文字列値を文字列値配列に配置することです。
SearchValue オブジェクト:
public class SearchValue<TItemId>
{
public TItemId ItemId { get; set; }
public string Value { get; set; }
public string[] Values { get; set; }
}
初期化後の私のテスト検索値は次のようになります。
searchValues[0]
.ItemId == 16
.Value == "2"
searchValues[1]
.ItemId == 16
.Value == "3"
searchValues[2]
.ItemId == 15
.Value == "6"
searchValues[3]
.ItemId == 15
.Value == "3"
searchValues[4]
.ItemId == 5
.Value == "Vertonghen"
最終結果を次のようにしたいと思います。
searchValues[0]
.ItemId == 16
.Values == "2,3"
searchValues[1]
.ItemId == 15
.Values == "6,3"
searchValues[2]
.ItemId == 5
.Value == "Vertonghen"
私は本当にLINQを使ってこれをやりたいと思っています。このようにして、別の SearchValue のリストを作成できました。
List<SearchValue<Byte>> duplicateSearchItems = (from x in searchValues
group x by x.ItemId into grps
orderby grps.Key
where grps.Count() > 1
select grps).SelectMany(group => group).ToList();
...しかし、values 配列に値を取得すると問題が発生します。理想的には、LINQ が重複レコードを含む単一のリストを返すことができれば、重複していないレコードはそのままで、配列に変換されます。おそらく、ある種のネストされたクエリですか?私は困惑しています。何か案は?
前もって感謝します!