0

我想从 Linq 查询向我的 DatagridTextcolumn 添加值。

我试过的:

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”类型。

如何绑定到DatagridTextcolumn从 LINQ 到 SQL 的绑定。

请帮助

4

2 回答 2

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 conversionfrom IEnumerable<Person>to Boolean

于 2013-04-10T18:01:42.290 回答
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

于 2013-04-10T18:03:40.810 回答