簡體   English   中英

C#Linq查詢以加入兩個列表並將結果分配給組合框

[英]C# Linq query to join two lists and assign the result to combobox

我有兩個字符串列表

 Lista           Listb
 ------------------------
 apple           mango
 mango           grapes
 grapes          watermelon
 pineapple       orange
 banana

我想在組合框中顯示lista的所有項目,還選擇在這種情況下芒果和葡萄都通用的項目,並在組合框中進行預檢查

combobox items
---------------------
 apple
 mango - checked
 grapes - checked
 pineapple
 banana 

以下應為您提供一個包含Lista值的列表以及有關是否應在IsChecked屬性中檢查列表中的項目的附加信息:

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

剩下的只是將結果綁定到組合框。 此步驟因您的平台(ASP.NET,WPF,Windows Form等,幾乎都具有組合框)而異,並且,我相信每個元素在Internet上都有據可查,因此您應該首先閱讀並嘗試一個。

你可以做

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

var common = listA.Intersect(listB);

得到重疊

嘗試在Linq中加入Left

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();

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM