我通过提供用户名或用户ID来提供用户灵活性,这些用户名是不同的数据库字段,两个字符串。以下是我的Linq查询:
var usr = ctx.Users.Where(a => (a.Username.Equals(id) || a.UserID.Equals(id))).ToList();
问题是,如果我用用户名:“johndoe”调用它,我得到一个记录,但如果我用户ID:“12345”,那么即使有一个用户“johndoe”,我也没有得到任何记录数据库中的ID为“12345”。
如果我将其更改为:
var usr = ctx.Users.Where(a => a.UserID.Equals(id)).ToList();
使用UserID可以正常工作; “12345”。所以似乎只评估了第一个条件。无法弄清楚我做错了什么......
只是为了说清楚:我想检查两个字段的给定id值,并返回任一字段与id匹配的记录。
我想得到的最终结果是在我的usr变量中返回一条记录,无论哪个字段,Username或UserID都与输入id匹配。
答案 0 :(得分:-2)
您的linq查询对我来说没问题
public class Users
{
public string Username {get;set;}
public string Userid {get;set;}
}
void Main()
{
var users = new List<Users>{new Users {Username="johndoe",Userid="123"},
new Users {Username="stevejobs",Userid="456"}
};
var filter = users.Where(a => (a.Username.Equals("123") || a.Userid.Equals("123"))).ToList();
filter.Dump();
var filter2 = users.Where(a => (a.Username.Equals("456") || a.Userid.Equals("456"))).ToList();
filter2.Dump();
}