Компактная запись метода - C#
Формулировка задачи:
Доброго времени суток!
Подскажите пожалуйста, как с помощью Linq более компактно и кратко записать сей метод
DateTime limit = DateTime.Now.AddMinutes((-1) * Properties.Settings.Default.minDeleteOlderRecords);
if (!m_List.Any() == true)
{
this.m_List.AddRange(insert);
}
else
{
foreach (OktellChainCommutation ins in insert)
{
foreach (OktellChainCommutation m in m_List)
{
if (ins.ChainId == m.ChainId)
{
// ClientNumber
// CallTimeStart
m.CallTimeEnd = ins.CallTimeEnd;
// FirstNumber
m.LastNumber = ins.LastNumber;
// CallTypeId
// InputTime
m.Commutation = ins.Commutation;
}
else
{
m.ClientNumber = ins.ClientNumber;
m.CallTimeStart = ins.CallTimeStart;
m.CallTimeEnd = ins.CallTimeEnd;
m.FirstNumber = ins.FirstNumber;
m.LastNumber = ins.LastNumber;
m.CallTypeId = ins.CallTypeId;
m.InputTime = ins.InputTime;
m.Commutation = ins.Commutation;
}
}
}
}
this.m_List.RemoveAll(x => x.InputTime < limit);
видимо форум еще не проснулся...
Решение задачи: «Компактная запись метода»
textual
Листинг программы
DateTime limit = DateTime.Now.AddMinutes((-1) * Properties.Settings.Default.minDeleteOlderRecords);
if (!m_List.Any() == true)
{
this.m_List.AddRange(insert);
}
else
{
// this.m_List.AddRange(insert.Where(x => this.m_List.Any(y => y.ChainId == x.ChainId) == true)); //может что нибудь такое?
var list = m_List.Join(insert, o => o.ChainId, i => i.ChainId, (o, i) => new { Exists = o, Inserted = i });
foreach (var item in list)
{
item.Exists.CallTimeEnd = item.Inserted.CallTimeEnd;
item.Exists.LastNumber = item.Inserted.LastNumber;
item.Exists.Commutation = item.Inserted.Commutation;
}
}
this.m_List.RemoveAll(x => x.InputTime < limit);