0
第一个表
+--------+------------+--------+
| 类型 | 品种| 价格 |
+--------+------------+--------+
| 苹果| 高分辨率照片| CLIPARTO 晚会 | 2.79 |
| 苹果| 高分辨率照片| CLIPARTO 富士| 0.24 |
| 苹果| 高分辨率照片| CLIPARTO 林贝特维格| 2.87 |
| 橙色 | 瓦伦西亚 | 3.59 |
| 橙色 | 肚脐 | 9.36 |
| 梨 | 布拉德福德 | 6.05 |
| 梨 | 巴特利特 | 2.14 |
| 樱桃| 冰 | 2.55 |
| 樱桃| 车兰 | 6.33 |
+--------+------------+--------+
第二张表
+--------+----------+
| 类型 | 最低价格 |
+--------+----------+
| 苹果| 高分辨率照片| CLIPARTO 0.24 |
| 樱桃| 2.55 |
| 橙色 | 3.59 |
| 梨 | 2.14 |
+--------+----------+
select type, min(price) as minprice
from fruits
group by type;

第一个表是我拥有的数据的示例,第二个表是我想从第一个表中得到的。

我正在使用GenericRepository/UnitOfwork从存储库中获取数据。

repository.fruitRepository.Get().GroupBy(m => m.type);

但是我只能获取类型字段,但我想获取更多字段。

我需要在 groupby 之前使用 select 子句吗?如果是,如何选择更多字段?

4

1 回答 1

0

GroupBy 方法返回更多数据,但它作为可枚举返回...您可以在 GroupBy 之后使用 Select 从中提取您想要的内容...

repository.fruitRepository.Get()
    .GroupBy(m => m.type)
    .Select(m => new { type = m.Key, minPrice = m.Min(f => f.Price) });

或者,如果您更喜欢 LINQ 语句:

var result = from x in repository.fruitRepository.Get()
             group x by x.type into typeGroup
             select new
             {
                 type = typeGroup.Key,
                 minPrice = typeGroup.Min(item => item.Price)
             };
于 2012-07-28T04:54:06.823 回答