首页 > 解决方案 > 从表中仅选择复合键的最佳方法

问题描述

我有一个名为 products 的表,它有一个 LineId 和 SizeId 的组合键。我只想选择这些值。但是每当我这样做时,我总是会遇到错误。例如:

    return _dbset.Select(x => new KeyValuePair(x.LineId, x.SizeId));

我得到错误

无法创建 keyvaluepair 类型的常量值 在此上下文中仅支持原始类型或枚举类型

即使我.ToList()在选择之前也会发生这种情况。我试过使用字典,但它是一个复合键,它认为有重复。

我想要它,所以在创建查询时,它只要求提供键而不是任何其他字段,因为我需要快速查询。

标签: c#entity-frameworklinq-to-sql

解决方案


在 Linq 投影中,Select您可以使用匿名类型或具有默认构造函数和 getter-setter 的自定义类。鉴于您要返回该数据,然后是自定义类。您不能在类上使用构造函数,因为 EF 无法将其转换为 SQL。

return _dbset.Select(x => new LineSizeKey { x.LineId, x.SizeId }).ToList(); 

其中 LineSizeKey 是具有两个属性 /w Getters & Setters 的 POCO 类。


推荐阅读