簡體   English   中英

如何獲取用戶列表

[英]How To Get list Of Users

我正在使用Entity Framework 6

public class ALLEvent
{
    [Key]
    public long Eventid { get; set; }
    public string eventname{ get; set; }
    public string AttendingUsers{ get; set; }
    public virtual List<User> Users{ get; set; }
}

public class Users
{
    [Key]
    public long id { get; set; }
    public string Name{ get; set; }
}

我有一個AllEvent類,在AttendingEvent屬性中,我有一個用逗號分隔的出席UserId的列表。 有什么辦法可以在AllEventsUsers屬性中AllEvents出席用戶的列表?

您可以使用Select來做到這一點:

allEvent.Users = allEvent.AttendingUsers.Split(',').Select(
u => new User
{
    Id = Convert.ToInt64(u)
}).ToList();

或使用foreach循環:

var users = new List<Users>();
foreach (var u in allEvent.AttendingUsers.Split(',').ToList())
{
    users.Add(new Users
    {
        Id = Convert.ToInt64(u)
    });
}

allEvent.Users = users;

如果需要長型,則使用Convert.ToInt64()方法。 但是請注意,這可能會引發異常。

https://msdn.microsoft.com/en-us/library/0zahhahw(v=vs.110).aspx

FormatException或OverflowException

您將必須對每個事件進行查詢以獲取用戶:

using(var ctx = new MyContext())
{
   ctx.Configuration.LazyLoadingEnabled = false;
   var events = ctx.AllEvent.ToList();

   foreach(var event in events)
   {
      event.Users = ctx.Users.Where(u => 
            event.AttendingUsers.Split(',').Cast<long>().ToList().Contains(u.id)).ToList();
   }
}

更好的選擇是使Users對事件具有外鍵(除非事件是多對多,否則需要一個中間表)。 然后,您可以使用延遲/渴望加載。 目前, virtual關鍵字在Event模型中沒有任何作用,因為實體之間沒有關系。

編輯答案,因為需要從字符串-> long強制轉換。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM