哪个是基于数据库值在C#突出显示列表框中将字符串传递给List的更好方法

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了哪个是基于数据库值在C#突出显示列表框中将字符串传递给List的更好方法相关的知识,希望对你有一定的参考价值。

如果有人能告诉我什么是定义list并将字符串传递给它的更好方法,我将不胜感激

从性能的角度来看,我不确定使用哪一个或哪一个更好

var selection = "28,2,10,30,100,51";
List<string> categories = selection.Split(',').ToList();
List<string> categories = new List<string>(selection.Split(',')); 

我实际上想要根据数据库选择突出显示Listbox项目

创建我的列表后,我循环遍历它们并使用以下代码突出显示asp.net中多选列表框中的选择

foreach (ListItem item in lstCatID.Items)
{
    if (categories.Contains(item.Value))
        item.Selected = true;
}

是最好的方法,或者可以通过任何其他方式来提高性能。

答案

如果您只是使用它来读取值,请尝试使用IEnumerable<string>,如果List<string>比列表更轻和限制。当您使用IEnumerable时,您可以让编译器有机会将工作推迟到以后,可能会在此过程中进行优化。因此,在使用像Linq这样的contains表达式时,你在这里使用IEnumerable可能是最好的选择。在desin模式期间,当您想要再次在两个对象之间传输项目列表时,IEnumerable是最好的选择,因为它更具限制性。

var selection = "28,2,10,30,100,51";          
IEnumerable<string> categories = selection.Split(',');

foreach (ListItem item in lstCatID.Items)
{
  if (categories.Contains(item.Value))
     item.Selected = true;
}
另一答案

ToList内部调用List构造函数采用IEnumerable类型的参数,因此对于你的两种情况它都是相同的。

你应该看看:Reimplementing LINQ to Objects: Part 20 - ToList (Jon Skeet)

您可能想知道为什么我们甚至需要ToList,如果我们可以通过直接调用构造函数来创建列表。不同之处在于,为了调用构造函数,您需要将元素类型指定为类型参数。

如果您可以使用Stopwtach来查看差异,那么对您来说会更好。首先确保您的代码有效,然后担心性能。通常,针对此类任务的性能优化会导致可忽略的改进。

以上是关于哪个是基于数据库值在C#突出显示列表框中将字符串传递给List的更好方法的主要内容,如果未能解决你的问题,请参考以下文章

Pandas HTML 输出条件格式 - 如果值在范围内,则突出显示单元格

visual studio 中将选中代码相同的代码的颜色设置,修改高亮颜色

突出显示可展开列表中的选定项目

如何突出显示 MS-Access 列表框行?

visual studio 中将选中代码相同的代码的颜色设置,修改高亮颜色

C语言设计 输入一个文字,查询数据库中是不是存在?