如何在结果数量可能不同的结果视图中访问字符串值?
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 个。您也可以使用for
或 foreach
在您不知道元素数量时循环遍历(使用 vehicleids.Count()
作为 for 循环的“停止”条件。
如何访问 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 个。您也可以使用for
或 foreach
在您不知道元素数量时循环遍历(使用 vehicleids.Count()
作为 for 循环的“停止”条件。