如何让这些东西进入C#中的linq?
我对linq有问题,我有以下代码:如何让这些东西进入C#中的linq?,c#,linq,C#,Linq,我对linq有问题,我有以下代码: Models.Users user = null; foreach (var item in db.Users) { if (item.username.Equals(username)) { ausgabe = true; user = item; } }
Models.Users user = null;
foreach (var item in db.Users)
{
if (item.username.Equals(username))
{
ausgabe = true;
user = item;
}
}
// linq, does not work
user = null;
var test = from u in db.Users
where u.username.Equals(username)
select u;
user = (Models.Users)test;
在运行时,我收到了一个错误,因为test i IQueryable,但是如何进行此对话?当您想要执行查询时,问题似乎是向用户抛出一个查询,因此可能:
user = test.SingleOrDefault();
(另请参见FirstOrDefault()
,First()
,以及Single()
)
此外,为了方便阅读,我可以建议:
where u.username == username
(在常规代码中,这也避免了
u.username
为null
,从而导致NullReferenceException
)的问题
var test = from u in db.Users
where u.username.Equals(username)
select u;
user = (Models.Users)test; // wrong part.
做
或
我在哪里可以设置默认值?默认部分意味着在您的情况下,如果没有用户名,它将是空的found@gurehbgui,我只是看到你的评论,但Kev评论已经完成。我可以在哪里设置默认值?@gurehbgui以及类的“默认值”是什么样的?最好在查询后检查
user==null
,然后做您想做的事情。或者可能:user=test.SingleOrDefault()??空瓶代码>
user = test.FirstOrDefault();
user = db.Users.FirstOrDefault(x=>x.username.Equals(username));