Lambda表达式执行

时间:2013-07-12 15:00:44

标签: c# linq-to-sql lambda

运行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 =&gt; o.id == 1 || o.id == 2 || o.id == 3 )。

0 个答案:

没有答案