в моем приложении c # WPF я добавляю столбцы в DataGrid во время выполнения и заполняю из своей базы данных SQL через LINQ. это работает нормально, пока я не попытаюсь добавить данные из моей таблицы «многие ко многим»
вот упрощенная версия 3 соответствующих таблиц my db:
documents: document_id, title
documents_keywords: document_id, keyword_id, value
keywords: keyword_id, name
что мне нужно в моей DataGrid - это столбец для document.title, плюс столбец для каждой записи в document.documents_keywords на основе выбора пользователя вот мой код:
DataGrid dataGrid = new DataGrid();
dataGrid.Columns.Add(new DataGridTextColumn
{
Header = "Title",
Binding = new Binding("title")
});
foreach (string keywordName in keywordsListBox.SelectedItems)
{
dataGrid.Columns.Add(new DataGridTextColumn
{
Header = keywordName,
Binding = new Binding("documents_keywords.FirstOrDefault(kw => kw.keyword.name.Equals(\""+keywordName+"\")).value")
});
}
dataGrid.ItemsSource = from d in db.documents select d;
Я получаю заголовки ключевых слов, но все ячейки пустые. сбой привязки при FirstOrDefault:
System.Windows.Data Error: 40 : BindingExpression path error: 'FirstOrDefault(d_k => d_k.keyword.name.Equals("Order#"))' property not found on 'object' ''EntityCollection`1' (HashCode=7935090)'. BindingExpression:Path=documents_keywords.FirstOrDefault(d_k => d_k.keyword.name.Equals("Order#")).value; DataItem='document' (HashCode=5781744); target element is 'TextBlock' (Name=''); target property is 'Text' (type 'String')
каков наилучший способ сделать это? прости меня, так как это моя первая прогулка по WPF и LINQ.