Привязать Linq к Datagridtextcolumn

Я хотел бы добавить значения в мой столбец DatagridText из запроса Linq.

Что я пробовал:

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.

Пожалуйста, помогите

2 ответа

Проблема в том, что вы пытаетесь преобразовать запрос linq, а не результаты этого запроса. Проблема возникает из модели отложенного выполнения Linq. Попробуйте добавить метод FirstOrDefault() к параметру вашего вызова ToBoolean:

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.

Это проблемный код -

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,

Другие вопросы по тегам