Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/assembly/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
是否有一个var.contains-C#_C# - Fatal编程技术网

是否有一个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时,你几乎可以重写它