[英]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
的列表。 有什么辦法可以在AllEvents
的Users
屬性中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.