2016-05-04 15 views
0

から降順で注文するのLINQを使用し、それは私が持っている別のリストへの呼び出しを行う必要があり、電話、電子メール、紙、など私はクラス<code>AccountCommList</code>を持つメソッドの戻り値

かもしれプロパティMediaを持っていますメディアタイプPhoneがモバイルか地上回線(0または1で表される)であるかにかかわらず、この他のリストは連絡先の順序を示すリスト内でより高いべきであると感じる順番を示すプロパティも有する。ここに私のコードがあります。

protected int RetrievePhoneType(string info, string acctNumber) 
    { 
     int type = xPhoneTypeList.Where(p => p.PhoneNum == info && p.AccountNum == acctNumber).Select(p => p.PhoneType).FirstOrDefault(); 

     return type; 
    } 

このコードは、このPhoneTypeListも私が必要importanceプロパティが含まれています覚えておいて、それは、細胞または固定電話であるかどうかを選択します。

ここにlinq文があります。

編集ためAccountCommListを表示 私はRetrievePhoneType方法を変更する必要がありますかなり確信しているが、私は​​

内の異なるリストにLINQ文を使用するかどうかはわかりません

PhoneTypeListInfo xPhoneTypeList = new PhoneTypeListInfo(); AccountCommList commList = new AccountCommList(acct.AccountNumber, "WEBUSER"); AccountCommList cellPhoneList = commList.Where(x=> x.Media == "Phone").Where(x => 1 == RetrievePhoneType(x.Info, acct.AccountNumber)).OrderByDescending(?????).ToList(); 

後世。重要性プロパティを持つPhoneTypeListInfoを表示

public class AccountCommList 
    { 
     public AccountCommList(); 

     public string ContactID { get; set; } 
     public string Info { get; set; } 
     public string Media { get; set; } 
    } 

EDIT 2

public class PhoneTypeListInfo 
{ 

    public string AccountNum { get; set; } 
    public int PhoneType { get; set; } 
    public string PhoneNum { get; set; } 

    public int Importance { get; set; } 

} 
+1

'AccountCommList'のコードを表示できますか? –

+0

@roryap更新され、編集に追加されました。 –

+2

あなたはまだあなたがリストを注文したい物件について言及していませんか? – vendettamit

答えて

1

変更PhoneTypeListInfoへの戻り値の型をしてみてください。

protected PhoneTypeListInfo RetrievePhoneType(string info, string acctNumber) 
{ 
    var type = xPhoneTypeList 
     .Where(p => p.PhoneNum == info && p.AccountNum == acctNumber) 
     .FirstOrDefault(); 
    return type; 
} 

次に、LINQの理解構文を使用します。したがって、コレクションを関連付けるのは簡単です。

とにかく、メソッドは常に最初に見つかったオブジェクトを返します。ソーティングは不可能です。

+0

私はこれを理解していないかもしれませんが、2つ以上の結果が出ているので、2番目の 'Where'節に' x.Info'を渡します。 RetrievePhoneTypeは、各x.Infoに一致する 'AccountCommList'の最初のものを返しますか? –

+0

@ChrisClark - Ok。うまくいってくれてうれしいです。おそらく私はあなたのクラスの構造を誤解していたでしょう。ハッピーコーディング! –

+0

フォローアップの質問と、私はこれが来ていることを知っていたと確信しています、 'p'を生きたままにする方法はありますか?後で 'PhoneType'にアクセスできないようですか? –

0

.OrderByDescending(p=>p.YourProperty) 
+0

'YourProperty'が別のリストにあるので、これは動作しません。 –

+0

OK、それを注文せずにcellPhoneListを生成するとどうなるでしょうか?AccountCommList cellPhoneList = commList.Where(x => x.Media == "Phone")ここで(x => 1 == RetrievePhoneType(x.Info、acct.AccountNumber)) .ToList(); 次に、commList.Select(x => new {あなたは必要に応じてオブジェクトを生成します})のようなことをします。)OrderByDescending(p => p.property); – Rafa

+0

そんなやり方で他のオブジェクトに参加することができます – Rafa

関連する問題