.net 林克,无法加入字符串
我有一个用户列表,每个用户都有一个问题列表。在我的模型中,问题列表应该是通过逗号的字符串。我尝试:.net 林克,无法加入字符串,.net,linq,c#-4.0,join,.net,Linq,C# 4.0,Join,我有一个用户列表,每个用户都有一个问题列表。在我的模型中,问题列表应该是通过逗号的字符串。我尝试: public List<ITW2012Mobile.ViewModels.AdminSurveyReportModel> SurveyReportList() { var q = from i in _dbContext.Users where i.UserId != null select new ITW2012Mobile.V
public List<ITW2012Mobile.ViewModels.AdminSurveyReportModel> SurveyReportList()
{
var q = from i in _dbContext.Users
where i.UserId != null
select new ITW2012Mobile.ViewModels.AdminSurveyReportModel()
{
FirstName = i.FirstName,
LastName = i.LastName,
Question4 = String.Join(", " , (from a in _dbContext.MultipleQuestions where a.MultipleQuestionType.KEY == MultipleQuestionKeys.BENEFITS select a.Question).ToArray())
};
return q.ToList();
}
public class AdminSurveyReportModel
{
public string FirstName { get; set; }
public string LastName { get; set; }
public string Question4 { get; set; }
}
当然,我得到了一个错误:
LINQ to实体无法识别方法“System.String”
JoinSystem.String,System.String[]”方法,此方法不能
被翻译成商店表达式
如何正确获取它?我建议使用字符串。本地连接操作,而不是使用可计算的:
尝试使用这种方法
尚未测试无法包含字符串。请加入初始投影,因为LINQ转换器不支持它。我可以为它编写一个自定义转换器吗?不加入linq,只需返回集合并在检索后加入即可。否,它不起作用:linq to Entities无法识别方法“System.String Aggregate[String]System.Collections.Generic.IEnumerable1[System.String],System.Func3[System.String,System.String,System.String]'方法,而此方法无法转换为存储表达式。问题4的类型为String,您的select语句的类型为IQuerable…@John:这很好-因为在q中,我只为匿名类型T创建IQueryable。在第二部分中,我只将其转换为AdminSurveyReportModel。我会重新命名这个财产,让它更清楚。哦,丢失了。非常感谢你!在调用.ToList之前,我需要为Question4Parts添加额外的过滤器,所以我想知道这个查询的性能。它是否只在点击时获取数据?ToList?或者它会在点击后立即查询。AsEnumerable?@Hp93:它不会获取数据,直到请求哪个ToList将执行此操作-但是如果在AsEnumerable之后指定一个筛选器,则将在本地而不是在数据库中执行筛选。
var q = from i in _dbContext.Users
where i.UserId != null
select new
{
FirstName = i.FirstName,
LastName = i.LastName,
Question4Parts = _dbContext.MultipleQuestions
.Where(a => a.MultipleQuestionType.KEY ==
MultipleQuestionKeys.BENEFITS)
.Select(a => a.Question)
};
return q.AsEnumerable()
.Select(x => new ITW2012Mobile.ViewModels.AdminSurveyReportModel
{
FirstName = x.FirstName,
LastName = x.LastName,
Question4 = string.Join(", ", x.Question4Parts)
})
.ToList();
Question4 = (from a in _dbContext.MultipleQuestions where a.MultipleQuestionType.KEY == MultipleQuestionKeys.BENEFITS select a.Question).ToArray().Aggregate((x,y) => x + "," + y)