1

table 、 field1 、 field2 などの特定のパラメーターに基づいて、Linq からデータを取得する一般的なメソッドを作成したいと思います。

たとえば、これら 2 つの特定のメソッドの代わりに使用される 1 つのメソッド:

public void DistributeCB(ComboBox cb)
    {
        BooksDBDataContext db = new BooksDBDataContext();
        Type T = db.GetType();

        //Authors table
        var data =db.Authors.Select(author => new
        {
            Id = author.AuthorId, //field 1
            Value = author.AuthorName //field 2
        });
        cb.ValueMember = "Id";
        cb.DisplayMember = "Value";
        cb.DataSource = data;
    }

    public void DistributeCB2(ComboBox cb)
    {
        BooksDBDataContext db = new BooksDBDataContext();

        //Publishers table
        var data = db.Publishers.Select(publisher => new
        {
            Id = publisher.PublishingId, //field 1
            Value = publisher.PublishingName //field 2
        });
        cb.ValueMember = "Id";
        cb.DisplayMember = "Value";
        cb.DataSource = data;
    }
4

2 に答える 2

1

文字列パラメータではなくジェネリック型としてエンティティを渡すことを気にしない場合は、次のことを試すことができます。

Linq-to-Entitiesの場合:

public void Distribute<TEntity>(ComboBox cb, 
                                DbContext db, 
                                string valueField, 
                                string displayField) 
                        where TEntity : class
{

    //Publishers table
    var data = db.Set<TEntity>() as IEnumerable;

    cb.ValueMember = valueField;
    cb.DisplayMember = displayField;
    cb.DataSource = data;
}

Linq-to-SQLの場合:

public void Distribute<TEntity>(ComboBox cb, 
                                DataContext db, 
                                string valueField, 
                                string displayField) 
                        where TEntity : class
{

    //Publishers table
    var data = db.GetTable<TEntity>() as IEnumerable;

    cb.ValueMember = valueField;
    cb.DisplayMember = displayField;
    cb.DataSource = data;
}
于 2012-10-22T19:24:47.380 に答える
0

私はいくつかのことを試してみましたが、動作しますが、コードについては確信しています:

    public void Distribute<TEntity>(ComboBox cb, BooksDBDataContext db, string valueField, string displayField)
                    where TEntity : class
    {


        var data = db.GetTable<TEntity>();


        cb.ValueMember = valueField;
        cb.DisplayMember = displayField;
        cb.DataSource = data;
    }
于 2012-10-22T20:33:56.340 に答える