2012-08-01 72 views
0

我有一個實體的用戶(基類)。其中有三個孩子實體管理員,經理和會員如何知道在LINQ

通過選擇所有的用戶我怎麼能知道特定的用戶是管理員或兒童型經理或成員。我必須展示在網格中的所有用戶數據與列名作爲類型,我需要證明管理員或成員或經理

+1

爲什麼不能在數據庫中,這將在隨後的類可以看到角色保存此。 – CloudyMarble 2012-08-01 05:50:28

+0

...並通過它可以過濾。會員可以成爲經理嗎?這是放棄繼承的另一個原因。 – 2012-08-02 22:23:31

回答

1

下面是這個完整的解決方案。 簡單呼籲每個實例

對GetType()方法,輸出爲enter image description here

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Text; 
using System.Threading.Tasks; 

namespace TestBaseUserConsoleApplication1 
{ 
    class Program 
    { 
     static void Main(string[] args) 
     { 
      var users = new List<User> 
       { 
        new User {Name = "User1"}, 
        new Manager {Name = "User2"}, 
        new Member {Name = "User3"}, 
        new Student {Name = "User4"} 
       }; 

      users.Select(p => new { p, UserTpe = p.GetType().Name }) 
       .ToList() 
       .ForEach(t => Console.WriteLine("User Name = {0}, User Type = {1}", t.p.Name, t.UserTpe)); 
      Console.ReadLine(); 
     } 
    } 

    public class User 
    { 
     public string Name { get; set; } 
    } 

    public class Manager : User { } 
    public class Member : User { } 
    public class Student : User { } 
} 
0

你可以使用Enumerable.OfType Method提取一些確切類的項目的一個子集合,說

collection.OfType<Admin>().ToList() 

或者你可以使用is運算符來檢查每個項目:

foreach(User item in collection) 
{ 
    if(item is Admin) 
    { 
    } 
    else 
    ... 
}