在两个选定列表中拆分 linq 连接查询并使用元组 return 这两个列表
Split linq join query in two selected lists and use Tuple to return the two lists
有如下代码:实体linq查询结果为select两个表。
查询中所有数据可用,但无法将结果拆分为两个列表。
public Tuple<List<sale>, List<product>> SearchProduct(int productId = -1, string searchProduct = "")
{
//ToDo: searchProduct not working...gives nothing
var companyId = DalSession.DalGetCurrentUser().Company_ID;
using (var entity = new secondsoftEntities())
{
var query = (from s in entity.sales
join p in entity.products on s.Product_ID equals p.ProductID
where productId > 0 ? s.Product_ID == productId : s.Company_ID == companyId
select new { s, p }).ToList();
if (!string.IsNullOrEmpty(searchProduct))
{
query = query.FindAll(x => x.p.Description.ToLower().Contains(searchProduct.ToLower()));
}
// split s as List<sale> and p as List<product> to tuple output
return Tuple.Create(new List<sale>(), new List<product>() );
}
}
在查询结果中我看到了 s 和 p,但是如何将它们精确地作为一个列表,其中包含属性,所以我可以 return 它们在元组中。
谢谢迪南
return Tuple.Create(query.Select(x => x.s).ToList(),
query.Select(x => x.p).ToList());
有如下代码:实体linq查询结果为select两个表。 查询中所有数据可用,但无法将结果拆分为两个列表。
public Tuple<List<sale>, List<product>> SearchProduct(int productId = -1, string searchProduct = "")
{
//ToDo: searchProduct not working...gives nothing
var companyId = DalSession.DalGetCurrentUser().Company_ID;
using (var entity = new secondsoftEntities())
{
var query = (from s in entity.sales
join p in entity.products on s.Product_ID equals p.ProductID
where productId > 0 ? s.Product_ID == productId : s.Company_ID == companyId
select new { s, p }).ToList();
if (!string.IsNullOrEmpty(searchProduct))
{
query = query.FindAll(x => x.p.Description.ToLower().Contains(searchProduct.ToLower()));
}
// split s as List<sale> and p as List<product> to tuple output
return Tuple.Create(new List<sale>(), new List<product>() );
}
}
在查询结果中我看到了 s 和 p,但是如何将它们精确地作为一个列表,其中包含属性,所以我可以 return 它们在元组中。
谢谢迪南
return Tuple.Create(query.Select(x => x.s).ToList(),
query.Select(x => x.p).ToList());