DoTranslation メソッドが実行されると、出力はすべての TranslatedObjects に対して同じハッシュ コードになります。TranslatedObject ごとに新しい List を作成するのではなく、なぜこのようなことが起こっているのでしょうか?
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());
}
}
}
更新: サービス呼び出しを次の linq-to-sql 呼び出しに変更しました: dataContext.OriginalObjects.Where(o => o.id == 1 || o.id == 2 || o.id == 3)。