2009-04-05 11 views
2

2種類のC#(3.5)タイプがあります。私はそれらを制御しないので、共通の型から継承したり、インタフェースを実装することはできません。しかし、彼らは「形状」に非常に似ています。LINQで2つの異なるC#リストを注文する

class A 
{ 
string Name 
string Data 
} 

class B 
{ 
string Title 
string OtherStuff 
} 

class C 
{ 
string ID 
string ExtendedData 
} 

List<A> myAList 
List<B> myBList 

私はLINQクエリで、次の操作を行いたいと思います:NameまたはTitleが注文リストmyAListmyBList内のすべての要素

リターン(何が適用されます)結果はList<C>ID = NameまたはTitleExtendedData = DataまたはOtherStuff

思考でなければなりませんか?

答えて

7
var myCList = (myAList.Select(a => new C 
    { ID = a.Name, ExtendedData = a.Data }) 
    .Union(myBList.Select(b => new C 
     { ID = b.Title, ExtendedData = b.OtherStuff })) 
    .OrderBy(c => c.ID) 
    .ToList(); 
+0

クリス、答えてくれてありがとう。ちょうど1注記: あなたは括弧の余分なセットを必要とする: (myAList ... b.OtherStuff})).OrderBy(C => c.ID) または[並べ替えは完全な新しいリストには適用されません。 – MMind

+0

良い点が追加されました。 –

1
var result = (
    from a in myAList 
    select new C { ID = a.Name, ExtendedData = a.Data } 
).Union(
    from b in myBList 
    select new C { ID = b.Title, ExtendedData = b.OtherStuff } 
).OrderBy(e => e.ID).ToList(); 
関連する問題