我有一個類(用戶)的物件(用戶)串列。現在我嘗試檢索具有特定屬性值的(唯一)物件(例如字串用戶名 = 名稱)。所以需要回傳的是物件,基于其屬性的值。
這里有幾個類似的問題,但似乎都沒有回傳整個物件。
我嘗試了幾種方法,包括這個:
public User GetUser(string name)
{
User currentUser;
for(int i = 0; i < this.users.Count; i )
{
if (users[i].GetName().Equals(name))
{
users[i] = currentUser;
}
};
return currentUser;
}
這里的一個問題是 currentUser 不被接受為變數。有什么更好的方法來解決這個問題?
uj5u.com熱心網友回復:
您可以使用LINQ:
public User GetUser(string name)
{
return users.FirstOrDefault(x => x.GetName().Equals(name));
}
注意:如果這樣的名稱不存在,將回傳默認值,這種情況下的默認值為null.
uj5u.com熱心網友回復:
獲得所需內容的快速方法是使用 LinQ
var user = users.Where(user => user.GetName() == name).First();
或更短
var user = users.First(user => user.GetName() == name);
uj5u.com熱心網友回復:
看來您正在嘗試這樣做
var user = users.FirstOrDefault(u => u.GetName().Equals(name));
uj5u.com熱心網友回復:
在 User 物件中使用用戶名的 getter 代替 GetName
public User GetUser(string name)
{
return users.FirstOrDefault(u => u.GetName().Equals(name));
}
uj5u.com熱心網友回復:
// is optional, if you want ignore case
// users[i].GetName().Equals(name, StringComparison.InvariantCultureIgnoreCase)
public User? GetUser(string name)
{
for(int i = 0; i < this.users.Count; i )
if (users[i].GetName().Equals(name))
return users[i]; // early-return pattern
return null; // returns null if no such user found
}
不要忘記在客戶端代碼中檢查 null:
var user = GetUser("SomeUserName");
if(user is null) {
// do some
}
如果你喜歡使用 linq:
public User? GetUser(string name) => users.FirstOrDefault(u => u.GetName().Equals(name));
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/482420.html
上一篇:IDEA初始化基礎配置
