我通过提供用户名或用户 ID 为用户提供灵 active ,它们是不同的数据库字段,都是字符串。下面是我的 Linq 查询:
var usr = ctx.Users.Where(a => (a.Username.Equals(id) || a.UserID.Equals(id))).ToList();
问题是,如果我用用户名调用它:“johndoe”,我会得到一条记录,但是如果我使用 UserID:“12345”,那么即使有一个用户“johndoe”,我也不会得到任何记录数据库中的 ID“12345”。
另外,如果我将其更改为:
var usr = ctx.Users.Where(a => a.UserID.Equals(id)).ToList();
它与 UserID 一起工作得很好; “12345”。所以似乎只有第一个条件得到评估。无法弄清楚我做错了什么...
为了清楚起见:我想检查给定 id 值的两个字段,并返回任一字段与 id 匹配的记录。
我想要得到的最终结果是在我的 usr 变量中返回一条记录,而不管哪个字段、用户名或用户 ID 与输入 ID 匹配。
最佳答案
我觉得你的 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();
}
关于c# - Linq 查询和多个仅具有 OR 第一个条件的 where 子句被评估,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36775334/