c# - 从表中仅选择复合键的最佳方法
问题描述
我有一个名为 products 的表,它有一个 LineId 和 SizeId 的组合键。我只想选择这些值。但是每当我这样做时,我总是会遇到错误。例如:
return _dbset.Select(x => new KeyValuePair(x.LineId, x.SizeId));
我得到错误
无法创建 keyvaluepair 类型的常量值 在此上下文中仅支持原始类型或枚举类型
即使我.ToList()
在选择之前也会发生这种情况。我试过使用字典,但它是一个复合键,它认为有重复。
我想要它,所以在创建查询时,它只要求提供键而不是任何其他字段,因为我需要快速查询。
解决方案
在 Linq 投影中,Select
您可以使用匿名类型或具有默认构造函数和 getter-setter 的自定义类。鉴于您要返回该数据,然后是自定义类。您不能在类上使用构造函数,因为 EF 无法将其转换为 SQL。
return _dbset.Select(x => new LineSizeKey { x.LineId, x.SizeId }).ToList();
其中 LineSizeKey 是具有两个属性 /w Getters & Setters 的 POCO 类。
推荐阅读
- git - 拉动时 Git 还原失败
- c# - .NET Core 2.0 IServiceCollection 缺少 AddHostedService?
- combobox - 如果未选中,则从特定的 TComboBox 项获取文本
- vba - 无法通过 VBA 使用 selenium 在搜索框中输入值
- r - R 脚本在本地机器上成功运行,而不是在 EC2 实例上
- python - Python - 在 CSV 或 XLS 中匹配的正则表达式,并返回匹配的位置
- java - Android Studio androidx.coordinatorlayout error and how to set up 3Dot Menu?
- string - Oracle SQL:我应该如何识别字符串的长度?
- flash - Adobe Air 错误 #3001:文件或目录访问被拒绝
- python - Python中的偏相关