我正在寻找一种方法来找出 List<> 中不在字符串值中的项目。我有一个项目列表<>,如下所示:
List<DoorDetails> ListDoorData = new List<DoorDetails>();
DoorDetails dm = new DoorDetails();
dm.door_id = 1;
dm.brand = "BM";
dm.buying_group = "Silly USA";
dm.setting_name = "Settings1";
dm.datamodel = 13;
dm.tracking_weeks = 1;
DoorDetails dm1 = new DoorDetails();
dm1.door_id = 2;
dm1.brand = "NB";
dm1.buying_group = "John USA";
dm1.setting_name = "Settings2";
dm1.datamodel = 16;
dm1.tracking_weeks = 14;
DoorDetails dm11 = new DoorDetails();
dm11.door_id = 3; ;
dm11.brand = "JA";
dm11.buying_group = "Mathew UK";
dm11.setting_name = "Settings3";
dm11.datamodel = 17;
dm11.tracking_weeks = 45;
ListDoorData.Add(dm);
ListDoorData.Add(dm1);
ListDoorData.Add(dm11);
我有一个字符串,其值如下所示:
string filterstr = "NB|JA";
我想获取“filterstr”中没有的所有商品的“品牌”。 这意味着,下面是“brand”属性不是“NB”和“JA”的对象,
DoorDetails dm = new DoorDetails();
dm.door_id = 1;
dm.brand = "BM";
dm.buying_group = "Silly USA";
dm.setting_name = "Settings1";
dm.datamodel = 13;
dm.tracking_weeks = 1;
(有时变量“filterstr”包含更多值,例如)
NB|JA|WS|AM
我已经尝试了下面的代码......但它没有得到确切的结果。
for (int i = 0; i < ListDoorData.Count(); i++)
{
if (!FilterStr.Contains(ListDoorData[i].GetType().GetProperty(FilterOrder)?.GetValue(ListDoorData[i])?.ToString()))
{
ListDoorData.Remove(ListDoorData[i]);
}
}
其中“FilterOrder”可以是“DoorDetails”类属性,如“brand”、“buying_group”或“setting_name”等
请帮助我获取不在字符串值中的项目列表 ??? 谢谢。
首先你需要拆分你的过滤项,然后你可以使用Linq的
Contains
string[] filterItems = filterstr.Split('|');
var filteredData = ListDoorData
.Where(d => !filterItems.Contains(d.brand));