У меня есть классы следующим образом:Есть ли эффективный способ объединения двух коллекций?
public class Root
{
public int Id {get;set;}
public string PlayerName{get;set;}
}
public class Scores:Root
{
public int GameT{get;set;}
public int GameZ{get;set;}
}
public class Experience:Root
{
public int ExT{get;set;}
public int ExZ{get;set;}
}
public class Total:Root
{
public int TotalT{get;set;}
public int TotalZ{get;set}
}
и TotalZ Общее число заводятся от добавления GAMET, внутр и Гамез, EXZ соответственно. У меня есть наблюдаемые коллекции очков и опыта, из которого я хочу, чтобы создать еще одну коллекцию Total, вот что я сделал до сих пор:
public ObservableCollection<Total> GetTotal(ObservableCollection<Scores> scores,ObservableCollection<Experience> experiences)
{
var tc= new ObservableCollection<Total>();
foreach(var scr in scores)
{
foreach(var exp in experiences)
{
if(scr.Id==exp.Id)
{
var tt= new Total{
Id=scr.Id,
Name=scr.PlayerName,
TotalT=scr.GameT+exp.Ext,
TotalZ=scr.GameZ+exp.Exz
};
tc.Add(tt);
}
}
}
return tc;
}
Это работает, но это слишком медленно, особенно когда записи начинают ударил сотни. Есть ли способ лучше?
Вам необходимо зарегистрироваться. –
Я не думаю, что ваш текущий код даже скомпилировался бы - 'tt.Id = scr.Id должен быть просто' Id = scr.Id' - LHS '=' в инициализаторе объекта не может содержать '. ' –
Если опыт всегда привязан непосредственно к заданной игре, почему эти два являются отдельными коллекциями? Почему не одна коллекция игр, каждая с двумя свойствами - оценка и опыт? – Luaan