我有几个字符串数组,都采用这种方案:
string[0] = article number;
string[1] = description;
string[2] = amount;
现在,List包含约50个这些数组。 现在我想知道,如何在数组中访问这些值。
例如: 我在文本框中输入了文章编号。 现在应搜索数组,其中包含“0”索引中的文章编号。 我如何实现这一目标? 我试过像:
for(int i = 0; i<List.length;i++)
{
if(List[i[0]] == txtBox.Text;
{
doSomething();
break;
}
}
但当然这还不好。
答案 0 :(得分:1)
我建议你定义一个这样的类
public class Article
{
public string ArticleNumber { get; set;}
public string Description { get; set; }
public string Amount { get; set; }
}
其目的是保存有关文章的所有信息,现在存储在数组中,这不是最佳方式。
然后你应该创建一个arcticles列表:
var articles = new List<Article>();
您将在其中添加文章。
这样做,你想要的是:
// This would check if there is any article in your list, whose article
// number starts with the letters in the txtBox.Text
if(articles.Any(article=>article.ArticleNumber.Contains(txtBox.Text))
DoSomething();
// If you want to search if there is any article, whose article number
// matches the inserted number in the textbox, then you have to change the
// above
if(articles.Any(article=>article.ArticleNumber == txtBox.Text))
DoSomething();
如果您打算使用可能存在的文章,那么我们应该将上述内容更改为以下内容:
var article = articles.FirstOrDefault(article=>
article.ArticleNumber.Contains(txtBox.Text));
或
var article = articles.FirstOrDefault(article=>
article.ArticleNumber == txtBox.Text);
if(article!=null)
DoSomething();
此版本与第一个版本之间的区别在于,您知道如果找到它可以使用article
,而无需再次查询序列。
答案 1 :(得分:1)
现有代码存在一些问题:
尝试将其更改为此类
for(int i = 0; i<List.length;i++)
{
if(List[i][0] == txtBox.Text)
{
doSomething();
break;
}
}
正如其他评论指出的那样,最好使用类和linq这样的东西
public class MyClass
{
public string ArticleNumber {get; set;}
public string Description {get; set;}
}
使用linq搜索
var list = new List<MyClass>()
if (list.Any(i => i.ArticleNumber.Equals(txtBox.Text)))
{
DoSomething();
}