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()似乎是其中之一。