我想从Linq查询中向DatagridText列添加值。
我尝试过:
DataGridTextColumn test = new DataGridTextColumn();
test.Binding = new Binding("test");
dgServer.Columns.Add(test);
dgServer.Items.Add(new Person()
{
Status = Convert.ToBoolean(from a in db.Persons
from d in db.PersonDetails
where a.pID == d.pDID && a.State == "Active"
select a)
});
XAML
<DataGridTextColumn x:Name="test" Binding="{Binding}" Header="test"/>
我对上面的代码有例外,说
无法将'System.Data.Objects.ObjectQuery`1类型的对象强制转换为'System.IConvertible'。
如何绑定从LINQ到SQL的DatagridTextcolumn
绑定。
请帮助
答案 0 :(得分:0)
这是有问题的代码 -
Status = Convert.ToBoolean(from a in db.Persons
from d in db.PersonDetails
where a.pID == d.pDID && a.State == "Active"
select a)
内部查询将返回IEnumerable of type Person
,您尝试将其转换为Boolean
,由于implicit conversion
到{{IEnumerable<Person>
之内没有Boolean
,因此显然无法编译1}}。
答案 1 :(得分:0)
问题是您正在尝试转换linq查询而不是该查询的结果。问题源于Linq的延迟执行模型。尝试在ToBoolean调用的参数中添加'FirstOrDefault()'方法:
Status = Convert.ToBoolean((from a in db.Persons
from d in db.PersonDetails
where a.pID == d.pDID && a.State == "Active"
select a).FirstOrDefault())
Rohit也有一个好处 - 您需要确保实际上可以从Person类型转换为Boolean