Обучение LINQ до сих пор было очень увлекательным, но, несмотря на чтение нескольких книг и кучу онлайн-ресурсов по этой теме, я все еще чувствую себя в целом n00b. Недавно я только что узнал, что если мой запрос возвращает анонимный тип, заполненный DataGridView будет ReadOnly (потому что, по-видимому, анонимными типами являются ReadOnly.)
Сейчас я пытаюсь найти самый простой способ:
- Получить подмножество данных из файла XML в DataGridView,
- Разрешить пользователю редактировать указанные данные,
- Вставьте измененные данные обратно в файл XML.
Пока у меня есть шаги 1 и 2:
public class Container
{
public string Id { get; set; }
public string Barcode { get; set; }
public float Quantity { get; set; }
}
// For use with the Distinct() operator
public class ContainerComparer : IEqualityComparer<Container>
{
public bool Equals(Container x, Container y)
{
return x.Id == y.Id;
}
public int GetHashCode(Container obj)
{
return obj.Id.GetHashCode();
}
}
var barcodes = (from src in xmldoc.Descendants("Container")
where src.Descendants().Count() > 0
select
new Container
{
Id = (string)src.Element("Id"),
Barcode = (string)src.Element("Barcode"),
Quantity = float.Parse((string)src.Element("Quantity").Attribute("value"))
}).Distinct(new ContainerComparer());
dataGridView1.DataSource = barcodes.ToList();
Это прекрасно работает при получении нужных мне данных из XML в DataGridView, так что у пользователя есть способ манипулировать значениями.
После выполнения пошаговой трассировки моего кода я обнаружил, что изменения значений, сделанные в DataGridView, не привязаны к объекту XDocument и, как таковые, не распространяются обратно.
Как мы позаботимся о Шаге 3? (получение данных обратно в XML) Возможно ли привязать XML напрямую к DataGridView? Или мне нужно написать еще одну инструкцию LINQ для получения данных из DGV обратно в XDocument?
Suggstions