5

(私はLinq to SQLがまったく初めてです)データベースと非常に密接に連携するWebアプリを作成しています。最も高速で接続時間効率の良いモデルを探しており、Linq to SQLがこれであると信じています。C#/.Net4/Visual Studio 2010 を使用しています

簡単にするために、多数の asp テキスト ボックスを含む Web .aspx ページを用意しました。Linq を介して SQL データから SQL オブジェクトに Text 値を渡したいと思います。デザイン ビューにテーブルが追加された DataClasses.dbml というファイルもあります。私のWebページのコードビハインドでこれまでに持っているコードは次のとおりです。

DataClassesDataContext db = new DataClassesDataContext(getConnectionString);

var table = from t in db.MyTable
            where t.PK == 2
            select new { t.col1, t.col2, t.col3};

db.Connection.Open();
db.  // What's the best way of loading the object?
db.Connection.Close();

列の値にアクセスするにはどうすればよいですか? または、データテーブルにデータバインドしますか? もしそうなら、どのように?

myTextBox1.Text = table.???col1.value;
4

3 に答える 3

16

接続を開いたり閉じたりする必要はありません。LinqToSql はそれを抽象化します。

クエリを作成したら、それを実行して、 を使用して行をオブジェクトとして取得できますSingleOrDefault()

using (var db = new DataClassesDataContext(getConnectionString))
{
    var query = from t in db.MyTable
                where t.PK == 2
                select new { t.col1, t.col2, t.col3};
    var myObject = query.SingleOrDefault();
}

ラムダ表記を使用して、この操作を簡素化することもできます。

using (var db = new DataClassesDataContext(getConnectionString))
{
    var myObject = db.MyTable.SingleOrDefault(t => t.PK == 2 )
}

オブジェクトにアクセスするには、対応するプロパティにマップされているため、列に直接アクセスできます。

myTextBox1.Text = myObject.col1;
于 2013-01-10T16:10:59.070 に答える
1

一般的な方法は、クエリを実行するメソッド (ToArray、ToList、First、Single など) を呼び出すか、foreach で列挙することです。

例えば:

var query = from t in db.MyTable
            where t.PK == 2
            select new { t.col1, t.col2, t.col3};

var result = query.ToArray(); // now it contains array of resulting objects

// or enumerate
foreach (var obj in query)
{
    // do stuff with obj
}
于 2013-01-10T16:11:20.780 に答える
0

使用する

myTextBox1.Text = table.FirstOrDefault().col1.ToString();
于 2013-01-10T16:06:50.910 に答える