有一个呼叫列表,包括starttime,stoptime,duration,caller和其他一些属性。现在我试着从这个列表中看到并发呼叫,但是我不知道如何开始这个任务。我想在.net C#中实现这个任务。计数来自Calllog的并发呼叫
的第一个想法就是把每个呼叫,它算到一个Array,每一秒,然后我有一个数组至极计数呼吁每一秒,但它不是那么好,我认为:-)
class CallConcurrentCounterController
{
static void Main(string[] args)
{
var Calls = new ImportDataFromCSV();
DataTable dataTable = Calls.GetDataTable(Path,Seperator);
DateTime startTime = new DateTime(2011,07,01);
callsBucket(dataTable,startTime);
}
public void callsBucket(DataTable Calls, DateTime startTime)
{
var callsBuckets =
from time in Enumerable.Range(0, (60 * 24))
.Select(i => startTime.AddMinutes(i)) // Create the times base on start time and current minute.
select new // Create an anonymous type
{
// Create a property called Time, that stores the time checked
Time = time,
// Another property that stores the number of calls happening at that time.
//CallCount = Calls.Rows.Count(Call => Call.start <= time && Call.stop >= time)
CallCount = Calls.AsEnumerable().Count
(Call => DateTime.Parse(Call.ItemArray[0].ToString() + " " + Call.ItemArray[1].ToString()) <= time &&
DateTime.Parse(Call.ItemArray[0].ToString() + " " + Call.ItemArray[2].ToString()) >= time)
};
}
}
从调用此函数的函数获得带有n行的DataTable每行都是一个带有属性的调用start ItemArray [1](用于启动时间),停止ItemArray [2](用于停止时间),日期ItemArray [0]和其他一些属性,如呼叫者号码...
现在我得到一个桶分钟计数的电话。但我怎么能将CallBuckets的类型转换为类似Enumerable的类型?
对变量使用大写字母令人困惑。 – Amy
更正的外壳 –
嗨乔治,我测试你的代码,但得到一些错误,我用Calls读取CSV并将其写入到一个名为“Calls”的DataTable中,然后使用参数初始化函数:调用startTime stopTime并在里面写入Code ,但我得到一个错误,没有接受DataRowCollection的函数Count。 – kockiren