programing

Linq-SQL ToDictionary ()

nasanasas 2020. 10. 12. 07:37
반응형

Linq-SQL ToDictionary ()


Linq를 사용하여 SQL (2008)의 두 열을 사전 (캐싱 용)으로 올바르게 변환하려면 어떻게해야합니까?

현재 IQueryable b / c를 반복하여 ToDictionary 메서드를 작동 할 수 없습니다. 어떤 아이디어? 이것은 작동합니다 :

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);
}

내가 정말로하고 싶은 것은 다음과 같이 작동하지 않는 것 같습니다.

var dic = (from p in db.Table
             select new {p.Key, p.Value })
            .ToDictionary<string, string>(p => p.Key);

하지만이 오류가 발생합니다. 'System.Linq.IQueryable'에서 'System.Collections.Generic.IEnumerable'로 변환 할 수 없습니다.


var dictionary = db
    .Table
    .Select(p => new { p.Key, p.Value })
    .AsEnumerable()
    .ToDictionary(kvp => kvp.Key, kvp => kvp.Value)
;

키를 정의 할 뿐이지 만 값도 포함해야합니다.

var dic = (from p in db.Table
             select new {p.Key, p.Value })
            .ToDictionary(p => p.Key, p=> p.Value);

감사합니다. 귀하의 답변은이 문제를 해결하는 데 도움이되었습니다.

var dic = db
        .Table
        .Select(p => new { p.Key, p.Value })
        .AsEnumerable()
        .ToDictionary(k=> k.Key, v => v.Value);

테이블의 모든 항목을 변환하기 위해 익명 개체를 만드는 이유는 무엇입니까?

다음과 같이 간단히 사용할 IDictionary<string, string> dic = db.Table.ToDictionary(row => row.Key, row => row.Value);수 있습니다. Table과 ToDictionary () 사이에 AsEnumerable () 호출을 포함해야 할 수도 있습니다. db.Table의 정확한 유형을 모르겠습니다.


또한 첫 번째 샘플을 수정하면 두 번째 루프 변수가 선언 및 사용에서 일치하지 않습니다.

참고 URL : https://stackoverflow.com/questions/245168/linq-to-sql-todictionary

반응형