数组中.用于2个匹配值的IndexOf
本文关键字:IndexOf 用于 2个 数组 | 更新日期: 2023-09-27 17:54:14
我有一个存储一些信息的数组。
我搜索这个数组以匹配使用以下代码的第一列:
int i = Array.IndexOf(ARRAY, ARRAY.Where(x => x.Contains(VALUE)).FirstOrDefault());
但是我想做的是找到匹配第一个值和第二个值的索引
像这样(如果有意义的话):
int i = Array.IndexOf(ARRAY, ARRAY.Where(x => x.Contains(VALUE1)).FirstOrDefault() && Contains(VALUE2)).Second());
编辑请求:
static void Main(string[] args)
{
//get states
Console.WriteLine("state1");
string state1 = Console.ReadLine();
Console.WriteLine("state2");
string state2 = Console.ReadLine();
//read from csv
String[] statearray = File.ReadAllLines(@"C:'Test'States.csv");
var query = from line in statearray
let data = line.Split(',')
select new
{
Start = data[0],
Finish = data[1],
StatesCrossed = data[2],
};
//get index
int i = Array.IndexOf(statearray, statearray.Where(x => x.Contains(state1)).FirstOrDefault());
Console.ReadLine();
}
其中state 1
和state 2 ="NSW"
其中csv
的格式为:
NSW, NSW, 1
NSW, VIC, 2
示例代码
int index = query.Select((v, i) => new { Value = v, Index = i + 1 })
.Where(p => p.Value.Start == state1 && p.Value.Finish == state2)
.Select(p => p.Index)
.FirstOrDefault() - 1;
但是你也需要修剪你的元素:
var query = from line in statearray
let data = line.Split(',')
select new
{
Start = data[0].Trim(),
Finish = data[1].Trim(),
StatesCrossed = data[2].Trim(),
};