我从 API 获取 JSON 响应
"table1": [
{
"abc": "test",
"def": "test1"
},
{
"abc": "test2",
"def": "User1"
}
]
绑定到
public List<object>? table1 { get; set; }
我想使用 Linq/Lamda 获取 User1。 以下返回0条记录
var filteredList = table1
.Where(item => item.GetType().GetProperty("def",BindingFlags.Instance | BindingFlags.Public | BindingFlags.IgnoreCase)?.GetValue(item)?.ToString() is "User1" or "User2")
.ToList();
有什么问题吗
我不明白你为什么在这里尝试使用 System.Reflection 和模式匹配
is
。
借助 JSON 库(例如 Newtonsoft.Json)来读取/解析对象的字段:
using Newtonsoft.Json.Linq;
var filteredList = table1
.Where(item => (new string[] {"User1", "User2"}).Contains(JObject.FromObject(item)?.SelectToken("def").ToString()))
.ToList();
或者,如果您知道
Table
对象的结构,则可以定义并使用模型类而不是 object
类型:
public class Root
{
//public List<object>? table1 { get; set; }
public List<Table>? table1 { get; set; }
}
public class Table
{
public string Abc { get; set; }
public string Def { get; set; }
}
var filteredList = table1
.Where(item => (new string[] {"User1", "User2"}).Contains(item.Def))
.ToList();