【问题标题】:[Linq-To-Sql]How to return two values of different datatypes?[Linq-To-Sql]如何返回两个不同数据类型的值?
【发布时间】:2010-05-18 13:12:48
【问题描述】:

这是我返回 UserId 的存储库方法,

public IQueryable<int> getLoginStatus(string emailId, string password)
{
    return (from r in taxidb.Registrations
           where (r.EmailId == emailId && r.Password == password)
           select r.UserId);
}

如何返回UserName,它是一个字符串以及UserId...有什么建议吗?

编辑:

我试过了,它可以工作,但是如何获取查询结果是否包含记录,

    public RegistrationBO getLoginStatus(string emailId, string password)
    {
        return (from r in taxidb.Registrations
                where (r.EmailId == emailId && r.Password == password)
                select new RegistrationBO()
                {
                    UserId = r.UserId,
                    UserName = r.UserName
                }).FirstOrDefault();
    }

【问题讨论】:

    标签: linq-to-sql string int iqueryable


    【解决方案1】:

    你需要定义一个类来包含结果然后使用这个:

    return (from r in taxidb.Registrations
           where (r.EmailId == emailId && r.Password == password)
           select new SomeClass { r.UserId, r.UserName });
    

    虽然看起来毫无意义...... SLaks 是对的,您可以返回用户:

    return (from r in taxidb.Registrations
           where (r.EmailId == emailId && r.Password == password)
           select r);
    

    【讨论】:

    • @Pandiya Chendur:如果没有匹配的行,则 FirstOrDefault 返回null
    • 我应该使用RegistrationBO还是IQueryable&lt;RegistrationBO&gt;...这两者有什么区别?
    • @Pandiya:主要区别是第一个只返回单个对象,第二个可以返回多个对象。
    【解决方案2】:

    您应该返回整个用户对象,方法是将select 子句更改为select r 并将返回类型更改为IQueryable&lt;User&gt;

    【讨论】:

    • +1:我认为这是一个明智的建议。为什么它被否决了?
    • 如果没有结果则返回null
    • @slaks RegistrationBOIQueryable&lt;RegistrationBO&gt; 这两者有什么区别?我应该用什么?
    猜你喜欢
    • 2011-05-30
    • 1970-01-01
    • 2011-05-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-12-05
    • 1970-01-01
    相关资源
    最近更新 更多