如何将linq查询转换为列表keyvaluepair

时间:2018-04-25 13:19:08

标签: c# linq keyvaluepair

我有这个查询,它读取SQL表中的所有列(45)和行(40)。

我希望将键存储为列名和值作为相应行中的列条目。因此,如果我循环键,我应该能够选择特定的键名及其各自的值

这就是我所拥有的:

var Query = (from k in K_DB.K_Mapping select k);
var q = Query.AsEnumerable().Select(item => new KeyValuePair<string, string>()).ToList();

当我运行代码时,我没有收到任何错误,但所有KeyValuePair都是null

2 个答案:

答案 0 :(得分:5)

您目前正在返回空KeyValuePair

你需要在回报中指定你想要的东西

var Query = (from k in K_DB.K_Mapping select k);
var q = Query.AsEnumerable().Select(item => new KeyValuePair<string, string>(item.PropertyX, item.PropertyY)).ToList();

答案 1 :(得分:0)

数据库处理过程中较慢的一个项目是从DBMS到本地进程的数据传输。因此,明智的做法是将获取的数据仅限制为您实际计划使用的数据。

您正在将完整的K_DB集合转移到本地进程。在将它们放入KeyValuePair之前,最好只传输实际计划使用的Key和Value。为此,我们使用Enumerable.Select

var result = K_Db
    .Where(kdbItem => ...)   // only if you don't want all kdbItems
    .Select(kdbItem => new   // fetch only the data you actually plan to use
    {
        Key = kdbItem.X,
        Value = kdbItem.Y,
    })
    .AsEnumerable()          // move the data to local memory
    .Select(fetchedItem => 
         new KeyValuePair<string, string>(fetchedItem.Key, fetchedItem.Value)
    .ToList();