繁体   English   中英

使用列表框 SelectedItems 作为 LINQ 参数

[英]Use listbox SelectedItems as LINQ argument

我有一个包含 class 个条目的列表:

public class Package
{
    private readonly string _packageID = string.Empty;
    private readonly string _packageStatus= string.Empty;

    public Package(string package_ID, string package_status)
    {
        _packageID = package_ID;
        _packageStatus= package_status;
    }

    public string PackageID
    {
        get
        {
            return _packageID;
        }
    }

    public string PackageStatus
    {
        get
        {
            return _packageStatus;
        }
    }
 }

基于这个 class 我用数据填充了一个列表:

List<Package> PackageList = new List<Package>();
PackageList.Add(new Package(0, "New");
PackageList.Add(new Package(1, "Processed");
PackageList.Add(new Package(2, "Processed");
PackageList.Add(new Package(3, "New");
PackageList.Add(new Package(4, "Sent");
PackageList.Add(new Package(4, "Received");

此数据显示在数据网格视图中:

dataGridView1.DataSource = PackageList

各种 package 状态显示在列表框中:

listBox1.DataSource = PackageList.Select(p => p.PackageStatus).Distinct().ToList();

使用此列表框,用户可以 select 多个状态并使用数据网格视图中的包更新列表。

我想使用 LINQ 根据列表框中选定的状态从 PackageList 中检索所有包。 我尝试了多种方法但直到现在都没有成功....

SubPackageList = PackageList.Where(o => o.PackageStatus == Listbox1.SelectedItems);

非常感谢任何关于如何解决这个问题的支持。

如果我理解正确的话,你最终会得到一个包列表和一个条件列表,你需要匹配的元素。

List<Package> PackageList = new List<Package>();
PackageList.Add(new Package(0, "New"));
PackageList.Add(new Package(1, "Processed"));
PackageList.Add(new Package(2, "Processed"));
PackageList.Add(new Package(3, "New"));
PackageList.Add(new Package(4, "Sent"));
PackageList.Add(new Package(4, "Received"));

List<string> Conditions = new List<string>() { "New", "Processed"};

var SubList = PackageList.Where(x => Conditions.Contains(x.PackageStatus)).ToList();
            
foreach (var item in SubList)
{
    Console.WriteLine($"ID:{item.PackageID}  Status:{item.PackageStatus}");
}

退货:

ID:0  Status:New
ID:1  Status:Processed
ID:2  Status:Processed
ID:3  Status:New

可以在这里查看

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM