我有一个数组,它从Linq-to-SQL查询中获取数据。我正在使用ASP.NET Webforms。
我们说我有下表:
tblNVRchannels :
ID fltNVR fltNamn
1 75 Kam1-75
2 75 Kam2-75
3 75 Kam3-75
4 75 Kam4-75
5 76 Kam1-76
6 76 Kam2-76
7 76 Kam3-76
C#代码:
using (myDataContext sls = new myDataContext())
{
IQueryable<tblNVRChannel> channels= (from channel in sls.tblNVRChannels
where kanal.fltNVR == 75
select channel);
tblNVRChannel[] kanArray = channels.ToArray();
foreach (var item in channelArray)
{
TextBox1.Text = item.fltNamn;
TextBox2.Text = item.fltNamn;
TextBox3.Text = item.fltNamn;
TextBox4.Text = item.fltNamn;
TextBox5.Text = item.fltNamn;
}
}
使用上面的查询我从表中获取值,但我无法在单独的文本框中显示每个项目,我得到的是每个文本框中查询的最后一项(Kam4-75),但我想在textbox1中使用Kam1-74 ,text2中的kam2-75等等。
有一些使用FirstOrDefault()
的例子,但是当我尝试它时,我只得到第一行对我不起作用,虽然我不确定。
Populating textboxes using LINQ2SQL 和Linq to Sql: How to Fetch specific row using stored procedure and display columns data into textboxes
我尝试使用循环分配textbox.text数据,但我不能。
我想在最终结果中找到类似下面的内容:
TextBox1.Text = kam1-75;
TextBox2.Text = kam2-75;
TextBox3.Text = kam3-75;
TextBox4.Text = kam4-75;
TextBox5.Text = NULL;
答案 0 :(得分:0)
试试这段代码。
using (myDataContext sls = new myDataContext())
{
IQueryable<tblNVRChannel> channels= (from channel in sls.tblNVRChannels
where kanal.fltNVR == 75
select channel);
tblNVRChannel[] kanArray = channels.ToArray();
var textbox = GetAll(this, typeof(TextBox));
// Do whatever you want to do with your textbox.
foreach (var item in channelArray)
{
foreach(Control c in textbox)
{
if (c is TextBox)
{
var tx = ((TextBox) x);
if (string.IsNullOrEmpty(tx.Text))
{
tx.Text = item.fltNamn;
break;
}
}
}
}
}
public IEnumerable<Control> GetAll(Control control, Type type)
{
var controls = control.Controls.Cast<Control>();
return controls.SelectMany(ctrl => GetAll(ctrl, type))
.Concat(controls)
.Where(c => c.GetType() == type);
}
根据您的要求更改代码。