When the DoTranslation method is run, the output is the same hash code for all of the TranslatedObjects. Why is this happening as opposed to having a new List for each TranslatedObject?
public class TranslatedObject
{
public static Expression<Func<OriginalObject, TranslatedObject>> ObjectTranslator = o => new TranslatedObject
{
id = o.id
translatedList = new List<String>()
};
public int id { get; set; }
public List<String> translatedList { get; set; }
}
public class Translator
{
public void DoTranslation()
{
//3 objects returned with ids 1, 2, and 3 respectively
IQueryable<OriginalObject> originalObjects = dataContext.OriginalObjects.Where(o => o.id == 1 || o.id == 2 || o.id == 3);
var translatedObjects = originalObjects.Select(TranslatedObject.ObjectTranslator).ToArray();
foreach(TranslatedObject translated in translatedObjects)
{
Console.WriteLine(translated.translatedList.GetHashCode());
}
}
}
UPDATE: Changed service call to the following linq-to-sql call: dataContext.OriginalObjects.Where(o => o.id == 1 || o.id == 2 || o.id == 3).