如何在结果数量可能不同的结果视图中访问字符串值?

How can I access string values in Results View where the number of results may vary?

如何访问 IEnumerable 结果视图中的 string 值,结果可能会有所不同?

我正在使用 foreach 循环遍历 list,然后获取 VehicleID:

的不同值
foreach (var trip in paidTrips) {
    var vehicleids = trip
        .Select(x => x.VehicleID)
        .Distinct()
        .ToList();

我知道怎么做:

string n = vehicleids[0];
string o = vehicleids[1];

但这给了我一个“索引超出范围”-如果有两个以上的项目则例外。

我认为使用 for 循环遍历索引并从中创建一个数组会很好吗?如果是这样,我该怎么做?

试试这个

IEnumerable<string> vehicleIds=paidTrips
        .Select(x => x.VehicleID)
        .Distinct()
        .ToList();
        //or ToArray();

您可以使用 foreach 循环访问

foreach( var id in vehicleIds)
{
       Console.WriteLine(id);
}

或仅使用索引

var vehicleId0 = vehicleids[0];
//or 
var vehicleId1=vehicleId[1];

或使用 linq

var vehicleId=vehicleIds.FirstOrDefault(x=> x=="1223");

调试器在骗你。您正在查看添加到 Select 查询中的 DistinctIterator。您在调试器中看到的值是 raw 数据 before DistinctIterator 过滤它。由于它们具有相同的值,在 Distinct 运行后,列表中只有一个值,这就是 vehicleids[1] 失败的原因。所以问题是你的结果比两项 less,而不是 more.

您当然可以使用索引器访问列表项,但在这种情况下的问题是您认为您有 2 个值,但实际上您只有 1 个。您也可以使用forforeach 在您不知道元素数量时循环遍历(使用 vehicleids.Count() 作为 for 循环的“停止”条件。