(我对Linq to SQL完全不熟悉)我正在创建一个与数据库密切配合的Web应用程序,我正在寻找最快且连接时间最高的模型,并且相信Linq to SQL就是这样。我正在使用C#/。Net4 / Visual Studio 2010
为简单起见,我有一个包含许多asp文本框的web .aspx页面。我想将他们的Text值从SQL数据通过Linq提供给SQL对象。我还有一个名为DataClasses.dbml的文件,在设计视图中添加了一个表。到目前为止,我在网页代码隐藏中的代码是:
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;
答案 0 :(得分:15)
您无需打开或关闭连接。 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();
}
您还可以使用lambda表示法简化此操作:
using (var db = new DataClassesDataContext(getConnectionString))
{
var myObject = db.MyTable.SingleOrDefault(t => t.PK == 2 )
}
要访问该对象,您可以直接访问这些列,因为它们已映射到相应的属性:
myTextBox1.Text = myObject.col1;
答案 1 :(得分: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
}
答案 2 :(得分:0)
使用
myTextBox1.Text = table.FirstOrDefault().col1.ToString();