我正在尝试使用 Linq 转换从存储库中选择的一些数据。
到目前为止我的代码:
Repository<Result> _repository = new Repository<Result>();
var disciplines = _repository.Query()
.Select(d => new Discipline
{
DisciplineCode = d.DisciplineCode,
Name = d.DisciplineName
})
.Distinct()
.ToList();
结果类如下所示:
public class Result
{
public virtual int ResultId { get; set; }
public virtual string DisciplineCode { get; set; }
public virtual string DisciplineName { get; set; }
public virtual int CompetitorId { get; set; }
//other stuff
}
当它运行时,我得到
无法确定表达式的序列化信息:< MemberInitExpression >
知道出了什么问题吗?
编辑:
根据克里斯的建议,我在 ToList 之后尝试了 Select,如下所示:
var disciplines = _repository.Query()
.Select(d => new
{
DisciplineCode = d.DisciplineCode,
Name = d.DisciplineName
})
.Distinct()
.ToList()
.Select(d => new Discipline { DisciplineCode = d.DisciplineCode, Name = d.Name });
但是,这一次,类似的错误,但它与匿名类型有关:
无法确定表达式的序列化信息:new __AnonymousType(d.DisciplineCode, d.DisciplineName)。
编辑2:
澄清一下, .Query 正在返回 IQueryable
底层数据库是 MongoDB(使用 C# 驱动程序)
如果我这样做:
var disciplines = _repository.Query()
.Select(d => d.DisciplineName)
.Distinct()
.ToList()
有用。通过作品,我的意思是我得到一个distinct
DisciplineNames 列表
我需要能够选择更多的属性,而不仅仅是名称。