Linq连接两个列表中的值
本文关键字:列表 两个 连接 Linq | 更新日期: 2023-09-27 17:58:07
我需要从单独的列表中提取两个值。我有一个Order对象列表和一个Visitors对象列表,每个对象都包含一个按日期排列的完整对象列表。
我需要从VisitorsList访问Visitors属性,从OrdersList访问TotalOrders属性。然后我需要用Visitors来划分每个TotalOrders,以获得第三个值(conversionrate)。最后,我想将每个conversionRate值添加到ListTotalConversions中。
我正在尝试编写一个Linq查询,从各自的Visitors和TotalOrders中获取它们,但我不知道如何做到这一点。
List<GAVisitorsModel> VisitorsList = GetGAStatisticsReport(model);
List<GC_OrdersModel> OrdersList = GetOrderReport(model);
List<GC_ConversionRateModel> TotalConversions = new List<GC_ConversionRateModel>();
foreach (var order in OrdersList)
{
string _date = order.Date;
var Conversions = VisitorsList.Join(OrdersList, x => x.Visitors, y => y.TotalOrders, (x, y) => new { X = x, Y = y });
foreach (var c in Conversions)
{
//-- Y / X = C
//int _conversion = C;
//-- GC_ConversionRateModel GC_Orders = new GC_ConversionRateModel(_date, _conversion)
}
}
return TotalConversions;
List TotalConversions应按日期返回转换列表。
这些是对象类:
GAVisitors模型:
public class GAVisitorsModel : IGAVisitorsModel
{
public string Date { get; set; }
public int Visitors { get; set; }
public GAVisitorsModel(string _date, string _visitors)
{
Date = _date;
Visitors = _visitors;
}
}
GCOrders模型:
public class GC_OrdersModel
{
public string Date { get; set; }
public int TotalOrders { get; set; }
public int TotalProducts {get; set;}
public GC_OrdersModel(string _date, int _totalOrders, int _totalProducts)
{
Date = _date;
TotalOrders = _totalOrders;
TotalProducts = _totalProducts;
}
}
GC_ConversionRateModel:
public class GC_ConversionRateModel
{
public string Date { get; set; }
public int ConversionRate { get; set; }
public GC_ConversionRateModel(string _date, int _conversionRate)
{
Date = _date;
ConversionRate = _conversionRate;
}
}
查看以下内容是否适用于
public List<GC_ConversionRateModel> GetConversionRate()
{
List<GAVisitorsModel> VisitorsList = GetGAStatisticsReport(model);
List<GC_OrdersModel> OrdersList = GetOrderReport(model);
List<GC_ConversionRateModel> TotalConversions = new List<GC_ConversionRateModel>();
OrdersList.ForEach(o => {
TotalConversions.Add((from v in VisitorsList
where v.Date == o.Date
select new GC_ConversionRateModel(o.Date, o.TotalOrders / v.Visitors)).FirstOrDefault());
});
return TotalConversions;
}
此外,在GAVisitorsModel
中,当您尝试将字符串分配给ctor
中Visitors = _visitors;
中的整数时,似乎出现了错误。
我建议使用:
var result = from visitor in VisitorsList
join order in OrdersList on visitor.Date equals order.Date into orders
select new {
Visitor = visitor,
VisitorOrders = orders
};
假设您有"连接"访问者和订单的某个属性(Date
值),您将拥有具有相应订单的访问者列表。