все. У меня возникли проблемы с поиском лучшим способом для извлечения данных из отношений NN ...«Слияние» SQL приводит к C# с LINQ
У меня есть следующий запрос SQL и ResultSet:
select
p.PersonID,
Name,
PhoneNumber
from Persons p
left join PhoneNumbers n on p.PersonID = n.PersonID;
PersonID Name PhoneNumber
----------- ------------ --------------------
1 John 1111111
1 John 2222222
1 John 3333333
2 Maria 4444444
2 Maria 5555555
3 Billy 6666666
То, что я хочу делать в клиентском приложении (C#) заключается в анализе этих результатов на множество объектов. Сейчас у меня есть следующий код, но мне интересно, если есть лучший способ сделать это ...
public class Person
{
public int ID;
public string Name;
public List<PhoneNumbers> PhoneNumbers = new List<PhoneNumbers>();
}
public class PhoneNumbers
{
public Person Owner;
public string PhoneNumber;
}
public List<Person> GetPersons()
{
const string query = @"select
p.PersonID,
Name,
PhoneNumber
from Persons p
left join PhoneNumbers n on p.PersonID = n.PersonID;";
DataTable dataTable = Select(query);
var groups = from row in dataTable.Rows.Cast<DataRow>()
group row by row["PersonID"];
List<Person> persons = new List<Person>();
foreach (var group in groups)
{
Person person = new Person
{
ID = (int)group.ElementAt(0)["PersonID"],
Name = group.ElementAt(0)["Name"] as string
};
foreach (var row in group)
{
person.PhoneNumbers.Add(new PhoneNumbers
{
Owner = person,
PhoneNumber = row["PhoneNumber"] as string
});
}
persons.Add(person);
}
return persons;
}
Спасибо большое.
Вы можете использовать LINQ-SQL. Вы можете показать схему таблицы базы данных? –