如何从EF

时间:2017-08-29 08:53:42

标签: c# entity-framework linq entity-framework-6

如何在使用SingleOrDefault查询时选择所有列的子集?例如,遵循LINQ表达式

var personid = ctx.persons.SingleOrDefault(p => p.login == currentLogin)?.personid;

将编译为SELECT TOP 1 * FROM ...类型的查询。我想仅Select()我感兴趣的列,例如声明产生SELECT TOP 1 personid, myColumn FROM ...引擎盖。

请注意,该问题不一定与linked question重复。我对Single / SingleOrDefault的上下文感兴趣,而不是LINQ的通用解决方案。由于明显的原因,将.SingleOrDefault().Select()链接起来 Single<T>会返回类型为T(或抛出)的单个对象,但这些对象显然无法实现IEnumerable<T>并且无法Select()

1 个答案:

答案 0 :(得分:3)

var personid = ctx.persons
    .Where(p => p.login == currentLogin)
    .Select(p => new {Prop = p.Column, personid = p.id})
    .SingleOrDefault()?.personid;

可能会奏效。