c# Список <object>в Список <string>() - PullRequest
0 голосов
/ 04 августа 2020

РЕШЕНИЕ Я просто решил проблему с

    var list = (List<object>)response.Result;
                    List<List<object>> listOfListOfObjects = list.OfType<List<object>>().ToList();
                    for (var i = 0; i < listOfListOfObjects.Count; i++)
                    {
                        liste.Add((listOfListOfObjects[i])[2].ToString()); //[2] returns to me href, [1] returns innertext etc..  
                    }

Всем спасибо!

Проблема

Я получаю результат от Script with List объекта, но я хочу проанализировать результат, поместив его в список строк и используя IndexOf для поиска ключевых слов et c. Я пытался использовать

var strings = (from o in objects
          select o.ToString()).ToList();

, но это не сработало, он преобразует элементы только с именем «System.Collections.Generi c .List`1 [System.Object]», это не преобразует точные элементы.

Вот мой код скрипта для cefsharp благодаря @ amaitland

const string script = @"(function()
                    {
                        var linksArray = new Array();
                        for (var i = 0; i < document.links.length; i++)
                        {
                            linksArray[i] = [String(document.links[i].innerHTML),
                                    String(document.links[i].innerText),
                                    String(document.links[i].href)];
                        }
                        return linksArray;
                    })();";

    browser.EvaluateScriptAsync(script).ContinueWith(x =>
    {
        var response = x.Result;

        if (response.Success && response.Result != null)
        {
            var list = (List<object>)response.Result; // I want to put that "list" into listBox

Также результат скрипта: Script Output Когда я преобразовал в строку

Ответы [ 2 ]

1 голос
/ 04 августа 2020

Кажется, у вас есть список списков. Если внутренние списки содержат значения, которые могут отображаться как полезные строки, возможно, вы можете разделить их запятыми:

var listOfStrings = strings.Select(s => string.Join(", ", s));
0 голосов
/ 04 августа 2020

Вы имеете дело со списком, в котором каждый элемент является списком сам по себе.

Приведение к List<object> завершается успешно, потому что внутренний список (List<object>) сам по себе является object. Однако вы должны преобразовать его в List<List<object>>.

Прямо сейчас вы вызываете ToString() во внутренних списках (= элементы внешнего списка), а не в элементы внутренние списки.

Неясно, намерены ли вы сгладить этот список или сохранить характер ваших данных «список в списке».

Если вы хотите сгладить его:

var outerList = (List<List<object>>) response.Result;

var allStringsInASingleList = outerList 
                                  .SelectMany(innerList => innerList)
                                  .Select(o => o.ToString())
                                  .ToList();

Если вы хотите сохранить вложенную структуру:

var outerList  = (List<List<object>>) response.Result;

var stringsInANestedList = outerList 
                                  .Select(innerList => 
                                      innerList.Select(o =>
                                          o.ToString()
                                      )
                                  )
                                  .ToList();
...