2016-11-03 3 views
1

私は2項目のリストを持っています。2つのリストを比較するlinqを使用して並べ替えますか?

IEnumerable<Investigator> investigators = RepositoryContext.InvestigatorRep.GetInvestigators(site.Site.Id, out totalCount); 

var NewInvestigators = base.ActivePage.Investigators; 

私は、NewInvesigatorsに捜査し、20項目中30の項目があり、両方のは、プロパティID、私はそれを一致させる必要がInvIdを持っています。

 var all = investigators.Where(b => crInvestigators.Any(a => a.InvestigatorId == b.Id)); 

私はこれを試してみましたが、私はこれら二つのリストのIDをマッチングに基づく新しいリストを作成したい を働いていません。 Idと一致する場合は特定の調査者を取得します(基本的には、NewInvesigatorsに存在するIdに基づいて調査者を分類します)。

私はそれぞれに使いますが、linqで可能かどうか知りたいですか?

in newinvestigator私は2つのプロパティー、investigatorIdとNameを持つオブジェクトを持っています。

私は研究者のID、都市、国を所有しています。 いいえ調査者リストの名前または調査担当者。

+0

yes use joi n in linq –

+1

リスト内の項目が別のリストに含まれているかどうかを調べる[LINQクエリ]の可能な複製](http://stackoverflow.com/questions/12656582/linq-query-to-find-if-items-in-リストに含まれている他のリスト) –

+0

Linqで可能です。use join – Viplock

答えて

2

あなたはこのような何かを試みることができる:joinを使用しているのと同じ結果を得るために

var result = investigators.Where(inv=>NewInvestigators.Any(ninv=>ninv.id == inv.investigatorId)) 
          .OrderBy(inv=>inv.id); 

別の方法を。

var result = from inv in investigators 
      join ninv in NewInvestigators 
      on inv.id equals ninv.investigatorId 
      order by inv.id 
      select inv; 
+0

@Downvoter私はdownvoteについてのあなたの推論に感謝します。前もって感謝します。 – Christos

+0

解決策は正しいので、誰かが投票を停止する理由は見当たりませんが、OPだけでなくソートも探しています。このソリューションはO(N^2)時間の複雑さを持ち、改善することができます。 –

+0

@MrinalKambojありがとうございます。私も注文を追加しました。 – Christos

0

//次のようにNewInvestigatorリストからHashSetの作成:

HashSet<int> newInvestigatorHashset = 
     new HashSet<int>(newInvestigators.Select(element => element.NewInvestigatorId)); 

//共通の研究者は研究者を注文//

var commonInvestigatorList = 
    investigators.Where(element => newInvestigatorHashset.Contains(element.Id)); 

上記で作成したIDのHashSetの上baesd取得データ

var result = commonInvestigatorList.OrderBy(i => i.Id); 
+0

私は両方のリストに正確なデータを持っていません。私はIDを持っている研究者の中にいると思っています。そして、新しい調査官にはInvestigatorIdがあります。私はそれと一致し、並べ替える必要があります。 –

+0

オプションがあります.Linq変換を使用して 'NewInvestigators'を' Investigator'に変換してから、 'IEqualityComparer'を供給して、私のコードを編集させてください。 –

+0

これはnewinvestigatorでは不可能です。調査者IDと名前。 私は、Id、City、countryというプロパティを持っています。 いいえ調査者リストの名前または調査担当者。 –

関連する問題