几个分配到一个选择

时间:2012-11-27 12:25:37

标签: c# string linq entity-framework

Users模型中,我有DateTime dtContractStartDateTime dtContractEnd

UserModel模型中,我有String dtContractStartString 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()
);

有可能吗?我找不到好的语法。

1 个答案:

答案 0 :(得分:2)

如果您使用的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();