在列表-linq中查找唯一参数的和



我有线路列表,线路包含呼叫列表(呼叫具有DestinationNumber属性(

这是我的系列型号

public class Line
{
public Line()
{
Calls = new List<Call>();
Messages = new List<Sms>();
Payments = new List<Payment>();
}
public int LineId { get; set; }
public int CustomerId { get; set; }
public Customer Customer { get; set; }
public Package Package { get; set; }
public ICollection<Call> Calls { get; set; }
public ICollection<Sms> Messages { get; set; }
public ICollection<Payment> Payments { get; set; }
public string LineNumber { get; set; }
public LineStatus Status { get; set; }
[DataType(DataType.DateTime)]
public DateTime? CreatedDate { get; set; }
[DataType(DataType.DateTime)]
public DateTime? RemovedDate { get; set; }
}

这是我的呼叫模型

public class Call
{
public int CallId { get; set; }
public int LineId { get; set; }
public Line Line { get; set; }
public DateTime DateOfCall { get; set; }
public int Duration { get; set; }
public string DestinationNumber { get; set; }
}

我想计数((唯一调用的次数

我试过那样的东西。。

Lines.Sum(line=>line.Calls.Sum(call=>call.DestinationNumber.Where(/*if DestiantionNumber not counted before*/))

GroupBy方法通过其仅存在一次x.Count() == 1DestinationNumber选择所有调用,并将其计数为Count()

int result = line.Calls.GroupBy(x => x.DestinationNumber).Count(x => x.Count() == 1);

我认为这样的东西应该有效:

var count = lines.SelectedMany(l => l.Calls)
.Select(c => c.DestinationNumber)
.Distinct()
.Count();

相关内容

  • 没有找到相关文章

最新更新