2010-01-09 68 views
0

考慮下面的表達式:的LINQ to SQL:增值轉型

from p in db.People 
    select new Person { 
     Name = p.Name, Age = p.Age, Gender = p.Gender.ToEnum<Gender>() 
}; 

它可以調用擴展方法static T ToEnum<T>(this string value);如預期的點。
我明白爲什麼有不知道如何將字符串轉換爲枚舉錯誤。
問題是:如何在不引入其他課程的情況下解決此問題?
我的意思是我可以定義類PersonWithGenderAsText,然後將其翻譯成Person類,但我覺得應該有一個更簡單的方法。
具體而言,我不介意在上面的表達式的結果中調用.ToList(),但我無法弄清楚其餘的。

回答

3

只需使用匿名內部類來獲取只是從數據庫所需的位,使用AsEnumerable切換到「處理」模式,然後你可以做改造成一個Person對象:

​​

如果有在db.People沒有更多的數據,你可以進一步簡化這個:

var query = db.People 
       .AsEnumerable() 
       .Select(p => new Person { Name = p.Name, 
             Age = p.Age, 
             Gender = p.Gender.ToEnum<Gender>() });