如果我有一些数据: Model ModelName代码 阿里斯1.2 1 阿里斯1.3 2 卡罗拉1.1 3 卡罗拉1.4 4
我想创建一个groupby查询,其中包含一个新的投影:
var vehicles = _vehicleRepository.GroupBy(x=>new {x.Model,x.ModelName,x.Code})
.Select(g => new { Text = g.Key.Model + " - " + g.Key.ModelName, g.Key.Code })
.ToList();
似乎我对Text = g.Key.Model +“ - ”+ g.Key.ModelName有困难,导致SQL错误
任何提示赞赏
答案 0 :(得分:2)
对此最简单的解决方法可能只是在客户端执行连接:
var vehicles = _vehicleRepository.GroupBy(x => new {x.Model,x.ModelName,x.Code})
.Select(g => g.Key)
.AsEnumerable()
.Select(k => new { Text = k.Model + " - " + k.ModelName,
k.Code })
.ToList();
这里AsEnumerable
有效地使查询的其余部分只在.NET中的调用站点上运行。我已经在中添加了一个额外的投影,只需从每个组中获取密钥,这样就不会传输超出必要数据的数据。
另一种选择可能是使用Distinct
:
var vehicles = _vehicleRepository.Select(x => new {x.Model,x.ModelName,x.Code})
.Distinct()
.AsEnumerable()
.Select(k => new { Text = k.Model + " - " + k.ModelName,
k.Code })
.ToList();
您可能不需要在此处调用AsEnumerable
- 您当然可以尝试删除它。