我有这个查询,它读取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
。
答案 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();