这个简单的Linq查询:
from c in mycontext.Customers
join o in mycontext.Orders on c.CustomerId equals o.CustomerId
where o.Status == 1
select new {c, o}
将导致
List<{c:Customer, o:Order}>
致电ToList()
。
将此匿名类型列表转换为客户列表(List<Customer>
)的最简单方法是什么?
答案 0 :(得分:7)
result.Select(o => o.Customer).ToList();
这是你的意思吗?
答案 1 :(得分:2)
为什么不使用.ToList<Customers>()
并且不要选择订单 - 加入后您不需要它们。
List<Customer> custList = (from c in mycontext.Customers
join o in mycontext.Orders on c.CustomerId equals o.CustomerId
where o.Status == 1
select c).ToList<Customer>();
答案 2 :(得分:1)
非常基本的方法,因为你明确地问道“转换这个匿名输入的最简单方法是什么”:
var anonymousEnumerable = from c in mycontext.Customers
join o in mycontext.Orders on c.CustomerId equals o.CustomerId
select new
{
c,
o
};
var typedEnumerable = anonymousList.Select(item => item.c).Distinct(); // either referenceCheck or you supply an IEqualityComparer<Customer>-implementation
也许您可以向我们提供一些您想要实现的更多信息!
答案 3 :(得分:0)
你需要这两个属性吗?如果是这样,请逐步浏览列表并实例化每个curstomer ......
像
这样的东西 List<Customer> customers = new List<Customer>();
foreach(item in linqQuery.ToList())
{
customers.Add(item.c);
//do something with the Order here...
}
答案 4 :(得分:0)
var ledger = from c in mycontext.Customers
join o in mycontext.Orders on c.CustomerId equals o.CustomerId
where o.Status == 1
select new {c, o};
var customers = (from row in ledger select row.Customer).Distinct().ToList();
这将是我对解决方案的投标(包括误解等):)