从IEnumerable<;字符串[]>;

本文关键字:gt 字符串 lt IEnumerable | 更新日期: 2023-09-27 18:27:29

我有一个这样的枚举(当我调试程序时说它是IEnumerable<String[]>。我对IEnumerable了解不够):

var result = from p in displayedParticipants
             select new[] 
                    { 
                        p.Country, 
                        p.City,
                        p.SurveyStartDate.ToString("dd.MM.yyyy HH:mm"),
                        p.SurveyFinishDate.ToString("dd.MM.yyyy HH:mm"),
                        p.Device.ToString(),
                        p.IP.ToString(),
                        p.Longitude.ToString(),
                        p.Latitude.ToString(),                                                   
                    };

我有一个索引数组,它指示从这个结果中选择哪个字段,即结果对象是字符串数组的列表,每个字符串数组都包含这些字段。

string[] toShow = {0,1}. 

这意味着我只想获得第一个和第三个字段(分别是国家和城市),并删除所有其他字段。但是IEnumerable<String[]>不允许我进行任何删除操作。

我该如何解决这个问题?谢谢你的帮助。

从IEnumerable<;字符串[]>;

IEnumerable不是一个包含可以更改内容的列表或数组。IEnumerable是可以枚举对象的东西。

但是,您可以从这个IEnumerable:中创建一个符合您需求的列表(或数组)

string[][] yourResults = 
    result.Select(inner => new[]{inner[0], inner[1]}).ToArray();

IEnumerableIEnumerable<T>是允许枚举序列的接口,因此它们不是可以添加或删除项的列表。您可以使用另一个查询:

List<string[]> list = result
    .Select(arr => toShow.Select(i => arr[i]).ToArray())
    .ToList();