2016-05-11 66 views
-1

以下Source綁定到Grid的Items Source屬性,但不知道爲什麼這種轉換不可行;我收到以下錯誤:「無法將List類型的對象轉換爲IList。」什麼是錯誤的,在這種情況下會有什麼工作?是否有可能將列表投射到不同類型的IList?

public IList<TypeTwo> Source { get; set; } 

    public SomeViewModel() 
    { 
     List<TypeOne> result = db.GetInfo().ToList(); 
     Source = (IList<TypeTwo>)result; 

    // This works if the IList is of Type TypeOne 
    // Source = db.GetInfo().ToList(); 
    } 

    public class TypeTwo { 
     // The same properties of TypeOne 
    } 

回答

2

您必須將每個元素分開投,而不是整個列表一次:

Source = result 
    .Select(x => new TypeTwo() 
    { 
     SharedProperty1 = x.SharedProperty1, 
     SharedProperty2 = x.SharedProperty2, 
     .... 
    }) 
    .ToList(); 

// only if TypeTwo derives from TypeOne, or implements an explicit cast operator 
//Source = result.Cast<TypeTwo>().ToList(); 
+0

這還幫我打掃TypeTwo類以及只需選擇需要的屬性。謝謝! – usefulBee

相關問題