我有一个要绑定的课程。
public class MyClass
{
public int Id { get; set; }
public string Name { get; set; }
public int Price { get; set; }
}
现在,这个类将从不同的表中获取值,但它们具有共同的ID。
这是我在循环中获得的列表。
var List1 = item.TicketTypes.Where(m => m.PerformanceID == item.Id)
.Select(t => new { t.Name, t.ID});
var List2 = item.Pricies.Where(m => m.PerformanceID == item.Id)
.Select(t => new { t.Price, t.ID });
item是每个循环实例的对象。
我想要的是,
我希望MyClass列表按其ID填写实体名称和价格。
答案 0 :(得分:2)
这里没有太多信息供我测试,但我有这个建议:
// Make sure to add a constructor to MyClass
var List1 = item.TicketTypes.Where(m => m.PerformanceID == item.Id)
.Select(t => new MyClass(t.Name, t.ID, item.Pricies.FirstOrDefault(p => p.PerformanceID == t.ID).Price));
这应该会给你想要的结果,但就像我说我没有足够的信息来测试这个,所以一定要注意这些问题,以便我们可以将它们组合在一起。
答案 1 :(得分:1)
在Linq声明中,如果我的假设是正确的(无法测试):
var result= from t1 in item.TicketTypes
join t2 in item.Pricies on t1.ID equals t2.ID
select new MyClass() { Id = t1.ID, Name = t1.Name, Price = t2.Price };
如果您需要列表
,请使用.ToList()
答案 2 :(得分:1)
试试这个:
var query = List1.Join(List2, l1 => l1.Id, l2 => l2.Id, (l1, l2) => new { ID = l1.Id, Name = l1.Name, Price = l2.Price });
foreach (var obj in query)
{
Console.WriteLine("{0} - {1} - {2}", obj.ID, obj.Name, obj.Price);
}