Linq使用select选择子结果

时间:2014-11-29 01:29:31

标签: c# linq linq-to-sql

我不确定我是否想在这里使用工会,或者这是否有用。

    var users =
        db.AspNetUsers.Where(
            x => x.AspNetRoles.Select(y => y.Id).Contains("4575754-799a-4bhe-8caf-00002344b7a6"))
            .Select(d => d.PatientId);

    var patients = from patient in db.Patients
        where patient.LastName == lastName && clinicId == patient.ClinicId && users.Contains(patient.Id)
        select new
        {
            patient.LastName,
            patient.AspNetUsers.First(d=>d.Email),
            patient.Sex
        };

当我从患者那里得到所有内容时,这是有效的,但当我尝试从AspNetUsers对象获取电子邮件地址时,我收到消息'无法将表达式类型字符串转换为返回类型bool'

当我在quickwatch中时,我可以看到整个AspNetUsers对象在患者对象中返回,但为什么我不能轻易地从该列表中选择一个属性?

1 个答案:

答案 0 :(得分:1)

LINQ中的这个表达式

patient.AspNetUsers.First(d=>d.Email)

表示“让我找到其布尔属性AspNetUserEmail”的第一个true。当然这没有意义,因为Emailstring不是布尔值。

您需要的是

patient.AspNetUsers.First().Email