2012-04-10 8 views
4

、私はusersコレクションからプロパティのサブセットを選択していると私は、ドロップダウンリストにバインドする必要があります。アクセスプロパティ - 以下のソースコードはC#

var locationDepts = (from u in users select new { u.RcNumber, u.RcName }).Distinct().ToList(); 

if(!locationDepts.Count.Equals(0)) 
{ 
    ddlRCListPerBuilding.DataSource = locationDepts; 
    ddlRCListPerBuilding.DataValueField = "RcNumber"; 

    //Want to format display test "RCNumber - RcName" 
    ddlRCListPerBuilding.DataTextField = string.Format("{0} - {1}", locationDepts.RcNumber, locationDepts.RcName); 

    ddlRCListPerBuilding.DataBind(); 
} 

私がしたいですリストアイテム表示テキストを匿名タイプRcNumberとRcNameの組み合わせとしてフォーマットします。匿名型のプロパティにアクセスして、ドロップダウンリスト項目のテキストの書式を指定するにはどうすればよいですか?

答えて

6

あなたは

var locationDepts = (from u in users 
        select new 
        { 
         u.RcNumber, 
         Combined = u.RcNumber + " - " + u.RcName 
        }).Distinct().ToList(); 

if(locationDepts.Count > 0) 
{ 
    ddlRCListPerBuilding.DataSource = locationDepts; 
    ddlRCListPerBuilding.DataValueField = "RcNumber"; 
    ddlRCListPerBuilding.DataTextField = "Combined"; 
    ddlRCListPerBuilding.DataBind(); 
} 
+1

DataTextFieldは基本的にオブジェクトのプロパティ名へのマッピングなので、string.formatのように "計算された"テキストフィールド値を作成することはできません。 "RcNumber - RcName"というプロパティ名。 – RTigger

4

を「組み合わせる」と呼ばれるデータ・ソースの新しいプロパティを作成することができます私はすでにフォーマットの値を含めるように匿名型を変更します

var locationDepts = (from u in users select new { u.RcNumber, RcName = String.Format("{0} - {1}", u.RcNumber, u.RcName) }).Distinct().ToList(); 

if(!locationDepts.Count.Equals(0)) 
{ 
    ddlRCListPerBuilding.DataSource = locationDepts; 
    ddlRCListPerBuilding.DataValueField = "RcNumber"; 

    ddlRCListPerBuilding.DataTextField = "RcName"; 

    ddlRCListPerBuilding.DataBind(); 
} 
+0

1:それはまだ(String.Formatので)それらを連結つもりが、少しより多くのコードを少し遅くしている@MikeGoodwin私は少し@Magnus –

+0

によって他の回答で連結にごString.Formatの(...)を好みます。 – Magnus

0

あなたは可能性がありビューモデル、その後

public class RcFields 
{ 
    public int RcNumber { get; set; } 
    public string RcName { get; set; } 
} 

List<RcFields> locationDepts = (from u in users 
           select new RcFields 
           { 
            u.RcNumber, 
            u.RcName 
           }) 
           .Distinct() 
           .ToList(); 

を使用します
... locationDepts.RcName .. 
関連する問題