1

私のプログラムは、レガシーフラットファイルからデータを読み取って処理する必要があります。

データを読み込んでprivate ICollection<transaction> transactions;

public class transaction
{
    public int transactionNum;
    public DateTime transactionDate;
    public int orderNum;
    public string customerName;
    public Decimal amount;
}

DataSourceこれICollection<T>(またはそのLINQクエリ)にを作成して、いくつかの値を制御できるようにするにはどうすればよいDataBindですか?

注:私は最小限のLINQ知識を持っています。以前は、データベーステーブルをアプリケーションにドラッグするだけでした。

4

1 に答える 1

1

あなたのコメントから:

ASP.NETフォームには、customerCheckLという名前のCheckBoxListがあります。データファイルをロードすると、コードはcustomerCheckL.Itemsに個別の顧客名のリストを入力する必要があります。それ、どうやったら出来るの?customerCheckL.DataSourceID = ???

それはもっと理にかなっています。EqulityComparer<transactions>顧客ごとに比較するクラスを実装できます。

public class TransactionCustomerComparer : IEqualityComparer<transaction>
{
    public bool Equals(transaction x, transaction y)
    {
        if (x == null || y == null) return false;
        return x.customerName == y.customerName;
    }

    public int GetHashCode(transaction obj)
    {
        if (obj == null) return int.MinValue;
        return obj.customerName.GetHashCode();
    }
} 

Enumerable(このメソッドは、カスタム比較子を渡すことができるすべてのメソッドで使用できることに注意してください)

次に、を使用Distinctして一意のリストを取得できます。DataSource、、DataTextFieldおよび DataValueField を設定するだけDataBindですCheckBoxList

var customerComparer = new TransactionCustomerComparer();
customerCheckL.DataSource = transactions.Distinct(customerComparer);
customerCheckL.DataTextField = "customerName";
customerCheckL.DataValueField = "transactionNum";
customerCheckL.DataBind();
于 2013-01-24T16:58:35.513 に答える