конкретный пример, на форме датагрид и два текст бокса.
list - считайте что это то что вы получили через linq.
для записи изменений в базу - берете bs.Current и в вашем контексте делаете апдейт.
public partial class Form1 : Form
{
List<A> list = new List<A>();
BindingSource bs = new BindingSource();
public Form1()
{
InitializeComponent();
}
private void Form1_Shown(object sender, EventArgs e)
{
list.Add(new A() { Id = 1, Name = "Name1" });
list.Add(new A() { Id = 2, Name = "Name2" });
list.Add(new A() { Id = 3, Name = "Name3" });
list.Add(new A() { Id = 4, Name = "Name4" });
bs.DataSource = list;
dataGridView1.DataSource = bs;
textBox1.DataBindings.Add("Text", bs, "Name");
bs.CurrentItemChanged += bs_CurrentItemChanged;
}
void bs_CurrentItemChanged(object sender, EventArgs e)
{
A item = bs.Current as A;
textBox2.Text = item.ToString();
}
}
public class A : INotifyPropertyChanged
{
private int id;
private string name;
public int Id
{
get
{
return id;
}
set
{
id = value;
PropertyChangedFun("Id");
}
}
public string Name
{
get
{
return name;
}
set
{
name = value;
PropertyChangedFun("Name");
}
}
public event PropertyChangedEventHandler PropertyChanged;
void PropertyChangedFun(string propName)
{
if (PropertyChanged != null)
PropertyChanged(this, new PropertyChangedEventArgs(propName));
}
public override string ToString()
{
return string.Format("{0}:{1}",id, name);
}
}