讓用戶成爲包含典型用戶數據(名稱,電子郵件...)的數據庫,其中ID爲主鍵。從SQL服務器提取包含所有已購買應用程序列表的用戶列表(映射表)
讓Applications
成爲一個數據庫,存儲一個ID爲主鍵的應用程序(名稱,開發人員...)的列表。
讓UsersApps
成爲兩者之間的映射表,使用主鍵。 UsersApps因此存儲行..., {102, user1_Id, appA_Id}, {103, userN_ID, appB_Id}, {104, user1_Id, appC_Id}, ...
等等。
我想檢索用戶數據的列表{name, email, List<Application> boughtApps}
我在努力尋找一個LINQ要求做到這一點,我試圖做的兩個步驟,得到一個大表,然後建立每個用戶的列表的應用程序。
var q1 = from user in _dbContext.Users
join appUti in _dbContext.AppUsers on user.Id equals appUti.UsersId
join app in _dbContext.Applications on appUti.ApplicationId equals app.Id
orderby user.Id
select new UserDataWithApp { Id = user.Id, Name = user.Name, firstName= user.FirstName, Email = user.Email, App = app };
然後解析q1.toList()
構建我的所需結果列表。
var qRes = q1.ToList();
int i = 0;
int j = 0;
while (i<qRes.Count())
{
listUsersWithApps[j] = qRes[i];
while (qRes[i].Id == listUsersWithApps[j].Id) // llist is ordered !!
{
listUsersWithApps[j].Apps.Add(qRes[i].Apps[0]);
i++;
}
j++;
}
難道還有更好的辦法嗎?
對不起,我不明白你怎麼去從流暢的api到你的一個班輪:(無論如何,我不能再配置數據庫,我使用了一個自動發電機。 – Poutrathor
試着瞭解第一個鏈接中的示例。不要專注於linq查詢,這並不重要。你不需要修改你的數據庫結構。我將編輯我的帖子以添加一些細節。 –