/ / eu quero converter um conjunto de dados de um banco de dados SDF em uma coleção obseravável no WPF - c #, wpf, banco de dados, conjunto de dados, coleção observável

Eu quero converter um conjunto de dados de um banco de dados SDF para coleção obseravable no WPF - c #, wpf, banco de dados, dataset, observablecollection

Atualmente, estou trabalhando com SQL CE e WPF. no meio da codificação, fiquei impressionado com a idéia de converter o conjunto de dados de um banco de dados em minha coleção de observação, que se liga aos controladores da interface do usuário, como Listbox e listview.

plz me guie, se possível com código !!

Respostas:

2 para resposta № 1

Digamos que seu DataSet contenha uma Tabela chamada Pessoa e essa Pessoa tenha as colunas Id, Nome e Idade.

Você primeiro cria um Person classe para armazenar seus dados de Pessoa:

public class Person
{
public int Id { get; set; }
public string Name { get; set; }
public int Age { get; set; }
}

Então você usa o LINQ para preencher seu ObservableCollection:

var people = new ObservableCollection<Person>(
dataset.Tables["Person"].AsEnumerable().Select(p => new Person
{
Id = p.Field<int>("Id"),
Name = p.Field<string>("Name"),
Age = p.Field<int>("Age")
}));

Você precisará adicionar a seguinte referência de montagem ao seu projeto para usar o AsEnumerable<T>() e Field<T>() métodos de extensão:

System.Data.DataSetExtensions (em System.Data.DataSetExtensions.dll)

Editar

Em resposta ao seu comentário, você normalmenteprocesse cada alteração que você fizer nos dados imediatamente, em vez de tentar converter todo o ObservableCollection de volta no DataSet. Portanto, por exemplo, se você adicionar uma nova Pessoa ao seu ObservableCollection, também desejará adicionar essa Pessoa ao DataSet.

Adicione uma pessoa:

var table = dataSet.Tables["Person"];
var row = table.NewRow();
row["Id"] = person.Id;
row["Name"] = person.Name;
row["Age"] = person.Age;
table.Rows.Add(row);

Excluir uma pessoa:

var table = dataSet.Tables["Person"];
var row = table.AsEnumerable().Where(p => p.Id == person.Id);
row.Delete();

Atualize uma pessoa (digamos que você queira alterar a idade para 37):

var table = dataSet.Tables["Person"];
var row = table.AsEnumerable().Where(p => p.Id == person.Id);
var row["Age"] = 37;

Você também pode querer olhar para LINQ to SQL porque automatiza muitas dessas coisas.