是否有一个var.contains-C#
我对以下代码有一个问题:是否有一个var.contains-C#,c#,C#,我对以下代码有一个问题: private void Filter (object sender, Android.Text.TextChangedEventArgs e) { List<Animal> animalList = new List<Animal>(); if(!string.IsNullOrEmpty(_editText.Text)) { foreach (string str in _animalList)
private void Filter (object sender, Android.Text.TextChangedEventArgs e)
{
List<Animal> animalList = new List<Animal>();
if(!string.IsNullOrEmpty(_editText.Text))
{
foreach (string str in _animalList)
{
if (str.Contains(_editText.Text))
{
animalList.Add (str);
}
}
}
_listView.Adapter = new AnimalAdapter(this, _animalList = animalList);
}
动物学家声明:
private List<Animal> _animalList;
private List\u animalList;
我需要检查\u animalList
是否包含\u editText.Text
的输入。
但是_animalList不是字符串,所以我需要使用var
是否有类似于var.Contains的内容
或我必须使用其他内容?方法可用于字符串
类型。您需要将对象强制转换为string
根据您的类定义,您应该执行以下操作:
foreach (Animal str in _animalList)
{
if (str.ToString().Contains(_editText.Text)) //using user defined "ToString()"
{
animalList.Add (str);
}
}
您还可以检查各个属性:
foreach (Animal str in _animalList)
{
if (str.AnimalNumber.ToString().Contains(_editText.Text)) //if "AnimalNumber" is like "_editText.Text"
{
animalList.Add (str);
}
}
方法可用于字符串
类型。您需要将对象强制转换为string
根据您的类定义,您应该执行以下操作:
foreach (Animal str in _animalList)
{
if (str.ToString().Contains(_editText.Text)) //using user defined "ToString()"
{
animalList.Add (str);
}
}
您还可以检查各个属性:
foreach (Animal str in _animalList)
{
if (str.AnimalNumber.ToString().Contains(_editText.Text)) //if "AnimalNumber" is like "_editText.Text"
{
animalList.Add (str);
}
}
如果任何动物对象的ToString
方法的输出等于\u editText.Text,则此表达式返回true
_animalList.Select(a => a.ToString()).Any(str => str.Contains(_editText.Text))
如果任何动物对象的ToString
方法的输出包含\u editText.Text
(作为子字符串),则此表达式返回true
。这相当于沙哈里亚的答案
var animalList = _animalList.Where(a => a.ToString().Equals(_editText.Text)).ToList();
var animalList = _animalList.Where(a => a.ToString().Contains(_editText.Text)).ToList();
这些语句直接过滤输入列表
var inputText = _editText.Text;
int enteredNumber;
// you should make sure that the inputText is always an int
var isInt = int.TryParse(inputText, out enteredNumber);
//for example, if you are going to find by AnimalNumber, which is an int, you can use this. .
if (isInt){
foreach (var animal in _animalList){
var animalNumber = animal.AnimalNumber;
if (animalNumber == enteredNumber)
{
animalList.Add(animal);
}
}
}
如果任何动物对象的ToString
方法的输出等于\u editText.Text,则此表达式返回true
_animalList.Select(a => a.ToString()).Any(str => str.Contains(_editText.Text))
如果任何动物对象的ToString
方法的输出包含\u editText.Text
(作为子字符串),则此表达式返回true
。这相当于沙哈里亚的答案
var animalList = _animalList.Where(a => a.ToString().Equals(_editText.Text)).ToList();
var animalList = _animalList.Where(a => a.ToString().Contains(_editText.Text)).ToList();
这些语句直接过滤输入列表
var inputText = _editText.Text;
int enteredNumber;
// you should make sure that the inputText is always an int
var isInt = int.TryParse(inputText, out enteredNumber);
//for example, if you are going to find by AnimalNumber, which is an int, you can use this. .
if (isInt){
foreach (var animal in _animalList){
var animalNumber = animal.AnimalNumber;
if (animalNumber == enteredNumber)
{
animalList.Add(animal);
}
}
}
编辑(LINQ备选方案):
编辑(LINQ备选方案):
与其尝试使用ToString
进行过滤,不如使用不动产值。例如:
var number = Convert.ToInt32(_editText.Text);
var filteredList = _animalList
.Where(x => x.AnimalNumber == number ||
x.StableNumber == number ||
x.LactoseNumber == number)
.ToList();
否则,用户可以键入“Number”,并且由于您的ToString
覆盖包含该字符串,因此列表中的所有项都将匹配
(我没有在上面的代码中包含任何验证或错误检查,所以你也应该考虑这些)。而不是试图使用<代码> toStudio进行筛选,最好使用真正的属性值。例如:
var number = Convert.ToInt32(_editText.Text);
var filteredList = _animalList
.Where(x => x.AnimalNumber == number ||
x.StableNumber == number ||
x.LactoseNumber == number)
.ToList();
否则,用户可以键入“Number”,并且由于您的ToString
覆盖包含该字符串,因此列表中的所有项都将匹配
(我没有在上面的代码中包含任何验证或错误检查,所以你也应该考虑这些)。
你可以发布<代码>动物<代码>类的定义吗?ThanksI将把animal类置于desquestion中,您不需要使用var
,它只是实际类型的替换(您只需要匿名类型)。您可以使用Animal
。但是您想将动物的哪些属性与输入文本进行比较?您的_animalList是任何类型的集合。您应该在集合中迭代以完成此操作。另外,请给出\u animalList
的定义。它与动物列表的定义相同吗?@user12345678987654321:但是\u animalList
是一个列表
,所以str
实际上不是一个字符串
,而是一个动物
。所以只要使用你想要的属性。\u editText.Text
映射到什么属性?请发布动物类的定义好吗?ThanksI将把animal类置于desquestion中,您不需要使用var
,它只是实际类型的替换(您只需要匿名类型)。您可以使用Animal
。但是您想将动物的哪些属性与输入文本进行比较?您的_animalList是任何类型的集合。您应该在集合中迭代以完成此操作。另外,请给出\u animalList
的定义。它与动物列表的定义相同吗?@user12345678987654321:但是\u animalList
是一个列表
,所以str
实际上不是一个字符串
,而是一个动物
。所以只要使用你想要的属性。\u editText.Text
映射到什么属性?不清楚OP是否希望将输入文本与从返回到字符串的字符串进行比较。答案也没有解释为什么OP不需要var
,但可以使用Animal
而不是string
。亚历克斯:最初的投票结果是-1,现在似乎是2(代表率越高,你可以看到实际的上下票数).@TimSchmelter我认为他想匹配对象的所有属性。这就是我所理解的。@Shaharyar你说得对。谢谢你的帮助,我会尽快把它标记为Awnserpossible@Shaharyar对于今后的问题,我会记住你的建议。感谢您的帮助。不清楚OP是否希望将输入文本与从ToString
返回的字符串进行比较。答案也没有解释为什么OP不需要var
,但可以使用Animal
而不是string
。亚历克斯:最初的投票结果是-1,现在似乎是2(代表率越高,你可以看到实际的上下票数).@TimSchmelter我认为他想匹配对象的所有属性。这就是我所理解的。@Shaharyar你说得对。谢谢你的帮助,我会尽快把它标记为Awnserpossible@Shaharyar对于今后的问题,我会记住你的建议。谢谢你help@TP是的,这就是您正在寻找的解决方案。记住,当您使用foreach时,您基本上可以将其重写为LINQquery@TP是的,这就是您正在寻找的解决方案。记住,当你使用foreach时,你几乎可以重写它