我有一个名为BorrowerList的List<Borrower>
。我希望能够从列表中查找并返回字符串值(name
)。来自类似问题的解决方案对我不起作用(使用Linq)
public Borrower FindBorrower(string name)
{
var match = BorrowerList.FirstOrDefault(stringToCheck => stringToCheck.Contains(name));
// error raised here says: does not contain a definition for 'Contains' and the best extension method overload
return match;
}
如果有帮助,这就是Borrower
class Borrower
{
private string name;
private Book b;
public Borrower(string n)
{
name = n;
}
public string GetName()
{
return name;
}
public Book GetBook()
{
return b;
}
public void SetBook(Book b)
{
this.b = b;
}
}
答案 0 :(得分:4)
错误来自您的Borrower
课程,它没有Contains
方法。
您似乎无法将适用于List<string>
的解决方案转换为List<Borrower>
。
最简单的解决方法是:
var match = BorrowerList.FirstOrDefault(borrower => borrower.Name.Contains(name));
这假设您向string Name {get;}
添加了Borrower
属性。如果没有,那么......
var match = BorrowerList.FirstOrDefault(borrower => borrower.GetName().Contains(name));
......应该足够了。
作为解释,签名FirstOrDefault
是Func<T, bool>
。在这种情况下,T
为Borrower
,而非string
,因此您需要深入了解Borrower
的属性/方法以获取名称。
这个问题可能有更好的解决方案。但就目前而言,这应该会让你解决问题。
答案 1 :(得分:1)
如果我猜对了你的意图:
public Borrower FindBorrower(string name)
{
var match = BorrowerList.Where(x => x.nameToCheck.Contains(name)).FirstOrDefault();
return match;
}
}
class Borrower
{
public string nameToCheck { get; set; }
// the rest of class definitions...
}