我有一个字符串列表,里面有10个元素,我需要从这10个元素中随机添加3个元素到C#中的WPF列表框(每行一个元素)

q3qa4bjr  于 2022-11-26  发布在  C#
关注(0)|答案(1)|浏览(191)
List<string> topLevel = new List<string>();
            

            topLevel.Add("000");
            topLevel.Add("100");
            topLevel.Add("200");
            topLevel.Add("300");
            topLevel.Add("400");
            topLevel.Add("500");
            topLevel.Add("600");
            topLevel.Add("700");
            topLevel.Add("800");
            topLevel.Add("900");

我试过了

var random=  topLevel.Distinct().OrderBy(x => Guid.NewGuid()).Take(3);
            lst2.Items.AddRange(random.ToArray());

但我得到了一个'AddRange'下划线错误,我不知道如何修复它

db2dz4w8

db2dz4w81#

示例:

// Initial list source of values
    // This MUST be an observable collection
    private readonly ObservableCollection<string> lst2Source
        = new ObservableCollection<string>() { "1", "2" };

    // Immutable list of adding values
    private readonly ReadOnlyCollection<string> topLevel
        = Array.AsReadOnly("000 100 200 300 400 500 600 700 800 900".Split());

    public SomeWindow()
    {
        InitializeComponent();

        // Source is assigned once after XAML initialization
        lst2.ItemsSource = lst2Source;
    }

    private readonly Random random = new Random();
    private void AddRandom(int count)
    {
        topLevel
            .OrderBy(_ => random.Next())
            .Take(count)
            .ToList()
            .ForEach(level => lst2Source.Add(level)); // Elements are added not to the UI element, but to the value source
    }

它只会在我的列表框中打印1和2
我不能lst2.items.clear();
“1”和“2”是示例的初始列表值。如果不需要它们,请删除它们。
若要加入随机元素,请呼叫AddRandom(...)方法。
若要清除集合,请呼叫lst2Source.Clear()。

相关问题