Привязать 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
,