我想挑选出只有受访者已经完成的某些预审工,但一直无法使用我的代码。LINQ选择和哪里不正确返回任何结果?
CODE:
IEnumerable<PreScreener> testin = new List<PreScreener>();
for (int i = 0; i < respondent.PreScreenerResponses.Count; i++)
{
testin = project.PreScreeners.Where(x => x.Id == respondent.PreScreenerResponses[i].PreScreenerId);
}
模型:
public class PreScreener : IHasId, IHasProjectId
{
public int? Id { get; set; }
public int? ProjectId { get; set; }
public string ExternalId { get; set; }
public string Name { get; set; }
public int? PartialCount { get; set; }
public int? DisqualifiedCount { get; set; }
public int? CompleteCount { get; set; }
public DateTime? CreatedOn { get; set; }
public DateTime? UpdatedOn { get; set; }
public List<PreScreenerQuestion> Questions { get; set; }
}
public class PreScreenerResponse : IHasId, IHasProjectId
{
public int? Id { get; set; }
public int? ProjectId { get; set; }
public int? PreScreenerId { get; set; }
public int? RespondentId { get; set; }
public string Ip { get; set; }
public DateTime SubmittedDate { get; set; }
public DateTime CreatedOn { get; set; }
public double? Latitude { get; set; }
public double? Longitude { get; set; }
public Dictionary<short, PreScreenerQuestionResponse> Response { get; set; }
}
Respondent.PreScreenerResponses [I] < --Prescreeners响应Prescreeners Project.PreScreeners [I] < - 所有Prescreeners属于到项目
我很简单只想把所有的Prescreeners,并把它们放入一个L这也将包括受访者的回应。我想我会做一个新的列表,然后结合两个不同的列表,但我选择哪里不工作我总是得到一个空的testin列表。
编辑的代码基于响应:
我想这无济于事
IEnumerable<PreScreener> testin = new List<PreScreener>();
testin = project.PreScreeners.Where(p => respondent.PreScreenerResponses
.Select(r => r.PreScreenerId)
.Contains(p.Id));
奏效如下勾掉答案!
PreScreenerResponse.Contains的最佳重载方法匹配有一些无效参数错误 – allencoded
@allencoded编辑。 – gleng
我试过你的新编辑它有一个新的错误。无法将lambda表达式转换为类型Response,因为它不是委托类型。它扭曲在psr => psr.PreScreenerId == x.Id – allencoded