LINQ-to-SQL()
Jak poprawnie przekonwertować dwie kolumny z SQL (2008) za pomocą Linq do słownika (do buforowania)?
Obecnie przeglądam IQueryable b / c nie mogę uruchomić metody ToDictionary. Jakieś pomysły? To działa:
var query = from p in db.Table
select p;
Dictionary<string, string> dic = new Dictionary<string, string>();
foreach (var p in query)
{
dic.Add(sub.Key, sub.Value);
}
To, co naprawdę chciałbym zrobić, to coś takiego, co nie wydaje się działać:
var dic = (from p in db.Table
select new {p.Key, p.Value })
.ToDictionary<string, string>(p => p.Key);
Ale dostaję ten błąd: Nie można konwertować z ' System.Linq./ Align = "left" / Kolekcje.Ogólne.IEnumerable "
4 answers
var dictionary = db
.Table
.Select(p => new { p.Key, p.Value })
.AsEnumerable()
.ToDictionary(kvp => kvp.Key, kvp => kvp.Value)
;
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2008-10-28 22:53:56
Definiujesz tylko klucz, ale musisz również podać wartość:
var dic = (from p in db.Table
select new {p.Key, p.Value })
.ToDictionary(p => p.Key, p=> p.Value);
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-03-27 12:54:07
Thanks guys, your answers help me fix this, should be:
var dic = db
.Table
.Select(p => new { p.Key, p.Value })
.AsEnumerable()
.ToDictionary(k=> k.Key, v => v.Value);
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2008-10-28 23:07:38
Dlaczego tworzysz anonimowy obiekt dla każdego elementu w tabeli tylko po to, aby go przekonwertować?
Można po prostu użyć czegoś takiego jak:
IDictionary<string, string> dic = db.Table.ToDictionary(row => row.Key, row => row.Value);
Może być konieczne włączenie wywołania AsEnumerable () pomiędzy Table i ToDictionary ().
Nie znam dokładnego typu db.Stolik.
Popraw także pierwszą próbkę, druga zmienna pętli jest niedopasowana przy deklaracji i użyciu.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-01-18 19:46:53