Мне нужно внедрить многие из многих отношений со словарем и ADO. Вот мой код, и мне нужно сделать компании на клиенте неповторимыми. Невозможно использовать заказ по запросу. Мне нужна помощь! Использование запроса:Словарь многих для многих
string Query= "SELECT c.ID, c.FirstName, c.LastName,
c.EGN, c.Birthday,
com.ID as CompanyID,
com.Name,
com.Location
FROM Clients c
LEFT JOIN ClientCompanies cc
ON c.ID=cc.ClientID
LEFT JOIN Company com ON cc.CompanyID=com.ID";
static List<Client> GetClients(SqlCommand command)
{
List<Client> listClients = new List<Client>();
Dictionary<int, Client> dicClients = new Dictionary<int, Client>();
Dictionary<int, Company> dicCompanies = new Dictionary<int, Company>();
using (SqlDataReader reader = command.ExecuteReader())
{
while (reader.Read())
{
Client newClient = null;
Company newCompany = null;
int clientId = (int)reader["ID"];
dicClients.TryGetValue(clientId, out newClient);
if (newClient == null)
{
newClient = new Client();
newClient.ID = (int?)reader["ID"];
newClient.FirstName = (!reader.IsDBNull(reader.GetOrdinal("FirstName")) ? (string)reader["FirstName"] : null);
newClient.LastName = (!reader.IsDBNull(reader.GetOrdinal("LastName")) ? (string)reader["LastName"] : null);
newClient.EGN = (!reader.IsDBNull(reader.GetOrdinal("EGN")) ? (string)reader["EGN"] : null);
newClient.Birthday = (!reader.IsDBNull(reader.GetOrdinal("Birthday")) ? (string)reader["Birthday"] : null);
}
int companyId = (!reader.IsDBNull(reader.GetOrdinal("CompanyID")) ? (int)reader["CompanyID"] : 0);
//Some check with dictionary
if (newCompany == null)
{
newCompany = new Company();
newCompany.ID = (!reader.IsDBNull(reader.GetOrdinal("CompanyID")) ? (int?)reader["CompanyID"] : null);
newCompany.Name = (!reader.IsDBNull(reader.GetOrdinal("Name")) ? (string)reader["Name"] : null);
newCompany.Location = (!reader.IsDBNull(reader.GetOrdinal("Name")) ? (string)reader["Name"] : null);
newClient.ClientTo.Add(newCompany);
}
dicClients[clientId] = newClient;
}
listClients = dicClients.Values.ToList();
return listClients;
}
С чем вам нужна помощь? Разве это не работает, как ожидалось, или вы получаете ошибку, или что ..? Является ли проблема с SQL или кодом или обоими? И почему нельзя использовать ORDER BY? – stuartd
У меня есть задача сделать это без заказа по запросу. Я имею в виду, что я должен сделать это решение настолько быстрым, насколько это возможно для процессора. –