如何将Array中的元素从列表传递给List? C#

时间:2018-01-30 20:53:45

标签: c# arrays list

预信息

- 用户在控制台中输入数据

- 在2个元素的数组中保存数据[2]

- 使用LIST中的2个元素保存数组

*现在我试图实现的是用户可以检查搜索是否在列表中,无论它是用大写还是大写。

List<string[]>MyList = new List<string[]>();
var[] myArray = new [] { "A", "B" };
MyList.Add(myArray);    

int y = 0;

Console.WriteLine("Inpu what you are Searching For: ");
string serchString = Console.ReadLine();
serchString = serchString.ToLower();

for (int i = 0; i < MyList.Count; i++)
{
    List<object> oneTimeList = new List<object>();
    oneTimeList.AddRange(myList[i]);

    Console.WriteLine(oneTimeList);

    if (MyList[i].Contains(serchString.ToLower()))
    {
        Console.WriteLine("Yes you have added this");
    }
    else if (!myList[i].Contains(serchString))
    {
        y += 1;
    }
}

if (y == myList.Count)
{
    Console.WriteLine("You Have not entered this Yet");
}

我的逻辑(可能不是地球上最好的:P)说我必须依次对用户进行的搜索和数字的所有元素进行比较,并且为了制作我首先需要获取列表数组的信息并将它们转换为列表然后将它们转换为小写。 在我尝试将数组添加到List并且我添加的所有部分都是Arrays []时,每件事情都会顺利进行。

有关如何处理此问题或如何将LIST内的ARRAY元素传递给新列表的任何建议?

1 个答案:

答案 0 :(得分:1)

听起来想要获取一个字符串数组(假设你提到它的下限),将它们全部添加到列表中,小写它们然后进行比较?

在这种情况下,您不需要执行任何操作。你可以这样做:

var myArray = new [] { "A", "B", "C" }
var toCheck = "a";

//Use the IEnumerable<T>.Contains() Linq extension
if (myArray.Contains(toCheck, StringComparer.OrdinalIgnoreCase))
{
    //...
}

如果确实想要将它们添加到列表中,我无法使用您的代码给您一个示例,但要“将数组元素传递到新列表”,您可以执行以下任何操作以下内容:

//List<T>(IEnumerable<string>) constructor
var newList = new List<string>(myListOfStrings);

//List<T>.AddRange(IEnumerable<string>)
var newList = new List<string>();
newList.AddRange(myListOfStrings);

//List<T>.Add(T) (adding items one at a time)
var newList = new List<string>();
newList.Add(myListOfStrings[index]);

此处值得注意的是,myListOfStrings的任何上述引用都可以是字符串数组(string[]字符串列表({{1因为它们都实现了List<string>,这是上述方法所需的类型(除了想要单个项目的Add)。

以下是List的文档,详细介绍了如何使用上述每个方法(以及所有其他可用方法......)