C# 将多个作业合并为一个选择
在C# 将多个作业合并为一个选择,c#,string,linq,entity-framework,C#,String,Linq,Entity Framework,在Users模型中,我有DateTime dtContractStart和DateTime dtContractEnd 在UserModelmodel中,我有String dtContractStart和String dtContractEnd 要使用Linq查询执行字符串转换,我想尝试以下操作: DateTime start; DateTime end; var users = DB.Users .Select(user => new UserModel {
Users
模型中,我有DateTime dtContractStart
和DateTime dtContractEnd
在UserModel
model中,我有String dtContractStart
和String dtContractEnd
要使用Linq查询执行字符串转换,我想尝试以下操作:
DateTime start;
DateTime end;
var users = DB.Users
.Select(user => new UserModel
{
id = user.id,
firstname = user.firstname,
lastname = user.lastname,
dtContractStart = "",
dtContractEnd = "",
}
&& start = user.dtContractStart
&& end = user.dtContractEnd
)
.ToList();
users.ForEach(user =>
user.dtContractStart = start.toString() &&
user.dtContractEnd = end.toString()
);
可能吗?我找不到好的语法。如果您使用的Linq提供程序不接受对
ToString
的调用,您可以分两步执行查询,使用AsEnumerable
强制执行查询:
var users = DB.Users
.Where(...) // Whatever filtering clause inside your query
.AsEnumerable() // Force the query execution, switching to Linq to Objects
.Select(user => new UserModel
{
id = user.id,
firstname = user.firstname,
lastname = user.lastname,
dtContractStart = user.dtContractStart.ToString(),
dtContractEnd = user.dtContractEnd.ToString(),
})
.ToList();
你想达到什么目标?使用查询中的最后一个值设置变量?反之亦然,使用变量的值设置所有创建对象的开始和结束?请澄清你的意图。我更新了我的问题。我只想实现字符串转换。那么为什么不在
选择中执行dtContractStart=user.dtContractStart.ToString()
?我不明白。您是否尝试过设置dtContractStart=start
和dtContractEnd=end
?@KooKiz-并非所有CLR方法都可以与Linq一起使用。ToString()似乎是其中之一。