我有一个List< string []>叫myList:
[0] "ABC" "Item Description Here" "Item Code Here"
[1] "DEF" "Item Description Here" "Item Code Here"
[3] etc, etc...
这就是我填充myList的方式:
...
while (myReader.Read())
{
string[] row = new string[myInt];
for (int i = 0; i < myInt; i++)
{
row[i] = myReader[i].ToString();
}
myList.Add(row);
}
...
现在我需要搜索myList并返回一个新的List&lt; string []&gt;调用newList [],其中包含1个或多个string [],其中第一个字符串与关键字匹配(“ABC”,“DEF”等)。我该怎么做?
答案 0 :(得分:3)
1)如果您只搜索一个关键字:
var result = myList.Where(s=>s[0].Equals("\"ABC\"")).ToList();
2)如果checklist
包含与myList
相同数量的元素:
List<string> checklist = new List<string>() {"ABC","DEF"};
var result = myList.Where((s,i)=>s[0].Equals(checklist[i])).ToList();
3)如果它可以匹配清单中的任何关键字而不是:
var result = myList.Where(s=>checklist.Contains(s[0])).ToList();
答案 1 :(得分:3)
定义关键字列表:
var keywords = List<string>() {"ABC", "DEF", ...};
然后你可以使用LINQ来过滤:
var newList = list.Where(ar => keywords.Contains(ar.First());
或者:
var newList = list.Where(ar => keywords.Any(k => k.Equals(ar.First()));
答案 2 :(得分:2)
var result = myList.Where(s=> s.Length >= 1 && s[0].Equals("ABC")).ToList();