2

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)。

4

0 に答える 0