Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/333.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何将linq查询转换为列表keyvaluepair_C#_Linq_Keyvaluepair - Fatal编程技术网

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

C# 如何将linq查询转换为列表keyvaluepair,c#,linq,keyvaluepair,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(); var Quer

我有一个查询,它读取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();
var Query=(从k_DB.k_映射中的k选择k);
var q=Query.AsEnumerable().Select(item=>newkeyvaluepair()).ToList();

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

您当前返回的是一个空的
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();
var Query=(从k_DB.k_映射中的k选择k);
var q=Query.AsEnumerable().Select(item=>newkeyvaluepair(item.PropertyX,item.PropertyY)).ToList();

您当前返回的是一个空的
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();
var Query=(从k_DB.k_映射中的k选择k);
var q=Query.AsEnumerable().Select(item=>newkeyvaluepair(item.PropertyX,item.PropertyY)).ToList();

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

您正在将完整的K_DB集合传输到本地进程。在将密钥和实际计划使用的值放入KeyValuePair之前,最好只传输它们。为此,我们使用

var结果=K_Db
.Where(kdbItem=>…)//仅当您不需要所有kdbItem时
.Select(kdbItem=>new//仅获取实际计划使用的数据
{
Key=kdbItem.X,
值=kdbItem.Y,
})
.AsEnumerable()//将数据移动到本地内存
.Select(fetchedItem=>
新的KeyValuePair(fetchedItem.Key,fetchedItem.Value)
.ToList();

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

您正在将完整的K_DB集合传输到本地进程。在将它们放入KeyValuePair之前,最好只传输密钥和实际计划使用的值。为此,我们使用

var结果=K_Db
.Where(kdbItem=>…)//仅当您不需要所有kdbItem时
.Select(kdbItem=>new//仅获取实际计划使用的数据
{
Key=kdbItem.X,
值=kdbItem.Y,
})
.AsEnumerable()//将数据移动到本地内存
.Select(fetchedItem=>
新的KeyValuePair(fetchedItem.Key,fetchedItem.Value)
.ToList();

Show
K_-Mapping
您当前正在将每个项转换为
new KeyValuePair()
。我们无法为您轻松解决此问题,因为我们不知道您想要什么作为键和值。您没有为键值对分配任何值,只是创建一个空对象。相反,您需要执行
新建KeyValuePair(“键”、“值”)
Btw.:您可以使用
字典
或者-如果可能的话-使用
ToLookup
进行
查找
。Daisy Shipton,而不是
列表
。我希望将键作为列名,将值作为列值。在这种情况下,如果我循环键,我可能能够选择特定列及其值Show
>K_Mapping
您当前正在将每个项转换为
新的KeyValuePair()
。我们无法为您轻松解决此问题,因为我们不知道您想要什么作为键和值。您没有为键值对分配任何值,只是创建一个空对象。相反,您需要执行
新的KeyValuePair(“键”,“值”)
Btw.:您可以使用
字典
或者-如果可能的话-使用
ToLookup
进行
查找
。Daisy Shipton,而不是使用
列表
。我希望将键作为列名,将值作为列值。在这种情况下,如果我循环键,我可能能够选择某些列及其值ely,
.ToDictionary(item=>item.PropertyX,item=>item.PropertyY)
而不是
.Select().ToList()
@VladimirPavelka是的,但它有不同的输出。
字典
不同于
列表
。如果他没有重复的Yes,“ToDictionary()`是最好的解决方案,否则
选择()
是最好的。或者,
.ToDictionary(item=>item.PropertyX,item=>item.PropertyY)
而不是
.Select().ToList()
@VladimirPavelka Yes,但它有不同的输出。
字典与
列表不同。如果他没有重复的“ToDictionary()”`否则是最佳解决方案
Select()
是最好的。感谢Harald的输入。基本上,我想从内存中的数据库表中获取整个数据,并根据需要进行处理。内存将每12小时刷新一次,以检查新的条目。感谢Harald的输入。基本上,我想从内存中的数据库表中获取整个数据,然后根据需要进行处理。内存将每12小时刷新一次,以检查是否有新条目