如果問題標題混亂,我很抱歉,我有一個場景,其中有兩個用戶類和地址。從另一個列表的ID獲取列表中的項目
public class User
{
public int userId { get; set; }
public string userName { get; set; }
public List<Address> address { get; set; }
}
public class Address
{
public string AddressLine { get; set; }
public string City { get; set; }
public string State { get; set; }
public int UserId { get; set; }
}
UserId是類地址中的外鍵,我有兩個List,用戶列表和地址列表。用戶地址的值爲空,我想獲得每個用戶的地址列表,我如何實現這一點?我知道我們可以使用foreach,但有沒有辦法通過linq來實現這一點?以下是示例代碼。
class Program
{
static void Main(string[] args)
{
var users = new List<User>();
users.Add(new User { userId = 1, userName = "User 1" });
users.Add(new User { userId = 2, userName = "User 2" });
users.Add(new User { userId = 3, userName = "User 3" });
users.Add(new User { userId = 4, userName = "User 4" });
var address = new List<Address>();
address.Add(new Address { AddressLine = "Address 1", City = "City 1", State = "State 1", UserId = 1 });
address.Add(new Address { AddressLine = "Address 1 Dup", City = "City 1", State = "State 1", UserId = 1 });
address.Add(new Address { AddressLine = "Address 2", City = "City 2", State = "State 2", UserId = 2 });
address.Add(new Address { AddressLine = "Address 2 Dup", City = "City 2", State = "State 2", UserId = 2 });
address.Add(new Address { AddressLine = "Address 3", City = "City 3", State = "State 3", UserId = 3 });
address.Add(new Address { AddressLine = "Address 3 Dup", City = "City 3", State = "State 3", UserId = 3 });
}
}
只是一個關於你的架構筆記...我會考慮是否有可能修改它。用地址存儲用戶ID是一個糟糕的設計。如果兩個用戶住在同一個地址,該怎麼辦?您應該真正擁有多對多的關係,即存儲帶有用戶ID和地址ID的中間表。 –
這只是一個例子,因爲我不能發佈我的原代碼。這將是安全漏洞,所以我很喜歡創建類似的虛擬數據。我同意這種模式設計是錯誤的。 –
LINQ也使用foreach。 [請點擊此處](https://referencesource.microsoft.com/) – Badiparmagi