4

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

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の組み合わせにしたい。匿名型のプロパティにアクセスして、ドロップダウン リスト項目のテキストの形式を示すにはどうすればよいですか?

4

3 に答える 3

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();
}
于 2012-04-10T20:14:28.690 に答える
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();
}
于 2012-04-10T20:14:41.770 に答える
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 ..
于 2012-04-10T20:22:33.283 に答える