MaY*_*YaN 2 c# linq anonymous-objects
我有一个匿名对象列表:
var jobs = new List<object>
{
new
{
JobName = "Job1",
JobDate = "Date1",
JobUser = "User1"
},
new
{
JobName = "Job2",
JobDate = "Date2",
JobUser = "User2"
}
};
Run Code Online (Sandbox Code Playgroud)
如何使用linq找到"Job2"?
例如
var job2 = jobs.Where(x=>x.JobName == "Job2");
Run Code Online (Sandbox Code Playgroud)
我知道以下内容但不能以优雅的方式将其应用于上面的用例:
var anonymJob = new
{
JobName = "Job2",
JobDate = "Date2",
JobUser = "User2"
};
dynamic tJob = anonymJob.GetType();
string jobName = tJob.JobName; // this will be "Job2"
Run Code Online (Sandbox Code Playgroud)
请注意jobs.First()或Last()不被接受作为此问题的正确答案是如何根据其特定属性查找作业.
谢谢
如果您使用相同的方法,则可以使用匿名类型的列表:
var jobs = new [] {
new { JobName = "Job1", JobDate = "Date1", JobUser = "User1" },
new { JobName = "Job2", JobDate = "Date2", JobUser = "User2" }
}.ToList();
var job2 = jobs.First(x => x.JobName == "Job2");
Run Code Online (Sandbox Code Playgroud)
隐式类型数组的使用允许您的列表仍然是强类型,但使用匿名类型.
如果你必须使用a List<object>,那么我希望:
IEnumerable<dynamic> dynamicJobs = jobs;
var job2 = dynamicJobs.First(x => x.JobName == "Job2");
Run Code Online (Sandbox Code Playgroud)
上班.请注意,这不涉及复制列表或更改列表的声明类型.你也可以使用:
var job2 = jobs.Cast<dynamic>().First(x => x.JobName == "Job2");
Run Code Online (Sandbox Code Playgroud)