我有一個包含類條目的串列:
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;
}
}
}
基于這個類,我用資料填充了一個串列:
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");
此資料顯示在 datagridview 中:
dataGridView1.DataSource = PackageList
各種包狀態顯示在串列框中:
listBox1.DataSource = PackageList.Select(p => p.PackageStatus).Distinct().ToList();
使用此串列框,用戶可以選擇多個狀態并使用資料網格視圖中的包更新串列。
我想使用 LINQ 根據串列框中的選定狀態從 PackageList 中檢索所有包。我已經嘗試了很多東西,但直到現在都沒有成功......
SubPackageList = PackageList.Where(o => o.PackageStatus == Listbox1.SelectedItems);
非常感謝任何有關如何解決此問題的支持。
uj5u.com熱心網友回復:
如果我理解正確,您最終會得到一個包串列和一個條件串列,并且您需要匹配的元素。
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
可以在這里查看
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/471242.html
