C# C Linq查询连接两个列表并将结果分配给combobox

C# C Linq查询连接两个列表并将结果分配给combobox,c#,linq,combobox,C#,Linq,Combobox,我有两个字符串列表 Lista Listb ------------------------ apple mango mango grapes grapes watermelon pineapple orange banana 我想在我的组合框中显示lista的所有项目,同时选择芒果和葡萄的共同项目,并在组合框中预先选中它们 combobox items ------------------

我有两个字符串列表

 Lista           Listb
 ------------------------
 apple           mango
 mango           grapes
 grapes          watermelon
 pineapple       orange
 banana
我想在我的组合框中显示lista的所有项目,同时选择芒果和葡萄的共同项目,并在组合框中预先选中它们

combobox items
---------------------
 apple
 mango - checked
 grapes - checked
 pineapple
 banana 
你能行

var listA = new[] {"apple", "mango", "grapes", "pineapple", "banana"};
var listB = new[] {"mango", "grapes", "watermelon", "orange"};

var common = listA.Intersect(listB);
要获得重叠,可以执行以下操作

var listA = new[] {"apple", "mango", "grapes", "pineapple", "banana"};
var listB = new[] {"mango", "grapes", "watermelon", "orange"};

var common = listA.Intersect(listB);
要获得重叠

选择可以获得布尔值列表,显示两个列表中的元素

List<string> Lista = new List<string>(new string[] { "apple", "mango", "grapes", "pineapple", "banana" });
List<string> Listb = new List<string>(new string[] {"mango","grapes","watermelon","orange"});

var inBoth = Lista.Select(x => Listb.Contains(x));
// False, True, True, False, False
Select可以获得一个布尔值列表,显示两个列表中的元素

List<string> Lista = new List<string>(new string[] { "apple", "mango", "grapes", "pineapple", "banana" });
List<string> Listb = new List<string>(new string[] {"mango","grapes","watermelon","orange"});

var inBoth = Lista.Select(x => Listb.Contains(x));
// False, True, True, False, False
在Linq中尝试左连接

var listA = new[] { "apple", "mango", "grapes", "pineapple", "banana" }.ToList();
var listB = new[] { "mango", "grapes", "watermelon", "orange" }.ToList();

var listCheckboxItem =
(
    from a in listA
    join b in listB on a equals b into lst
    from item in lst.DefaultIfEmpty()
    select new
    {
        Name = a,
        IsChecked = !(string.IsNullOrEmpty(item))
    }
).ToList();
在Linq中尝试左连接

var listA = new[] { "apple", "mango", "grapes", "pineapple", "banana" }.ToList();
var listB = new[] { "mango", "grapes", "watermelon", "orange" }.ToList();

var listCheckboxItem =
(
    from a in listA
    join b in listB on a equals b into lst
    from item in lst.DefaultIfEmpty()
    select new
    {
        Name = a,
        IsChecked = !(string.IsNullOrEmpty(item))
    }
).ToList();

以下内容应为您提供一个列表,其中包含Lista中的值以及是否应在IsChecked属性中检查列表中某项的其他信息:

var result = Lista.Select(a => new 
                    {
                        Value = a,
                        IsChecked = Listb.Any(b => b == a)
                    }).ToList();

剩下的只是将结果绑定到combobox。此步骤因平台而异ASP.NET、WPF、Windows窗体等。几乎所有步骤都有combobox,我相信每个步骤都有,在internet上有很好的文档记录,因此您应该先阅读并尝试一个。

以下内容应为您提供一个列表,其中包含Lista中的值以及是否应在IsChecked属性中检查列表中某项的附加信息:

var result = Lista.Select(a => new 
                    {
                        Value = a,
                        IsChecked = Listb.Any(b => b == a)
                    }).ToList();

剩下的只是将结果绑定到combobox。此步骤根据您的平台ASP.NET、WPF、Windows窗体等而有所不同。几乎所有的步骤都有combobox,我相信,每个步骤都在internet上有很好的文档记录,因此您应该先阅读并尝试一个。

在问问题时,您应该包括您尝试过的示例代码,而不仅仅是询问代码。请参阅询问问题的时间,以便您应该包括您尝试过的示例代码,而不仅仅是询问代码。看见