簡體   English   中英

如何將兩個實體對象連接在一起?

[英]How to join two entity objects together?

我環顧四周以尋求答案,發現的內容與我正在執行的操作類似,但並沒有完全正確。 當它們是列表時,我可以加入兩個實體,但當它們是單個對象時,則不能。 我不確定這是否有意義

這里我有兩個實體對象

Location location = VIPEF.Locations
    .Where(w => w.LocationID == id).FirstOrDefault<Location>();
Contact contact = VIPEF.Contacts
    .Where(w => w.ContactID == location.ContactID).FirstOrDefault<Contact>();

但是當我去寫一個查詢時:

var query = from a in location
            join b in contact on a <-- Thats where I get a problem

一旦我加入了兩者,就無法從位置獲取ID,而我得到的唯一選擇是a.equals而不是我認為應該獲取的a.LocationID

我在這里做錯了什么?

您不需要Linq將兩個對象連接在一起,只需要組成一個新對象。 使用對象初始化程序語法非常簡單:

var thing = new Thing //<-- Your class that has the combined properties you need
{
    LocationID = location.LocationID, 
    LocationName = location.Name,
    ContactName = contact.Name,
    ContactAddress = contact.Address,
    //etc...
};

或者,您可以一次完成所有操作,而不是2個查詢,然后進行合成:

var things = from l in VIPEF.Locations
             join c in VIPEF.Contacts on l.ContactID equals c.ContactID
             where l.LocationID == id
             select new Thing
             {
                 LocationID = location.LocationID, 
                 LocationName = location.Name,
                 ContactName = contact.Name,
                 ContactAddress = contact.Address,
                 //etc...
             };

這將為您提供一個IEnumerable<Thing> ,盡管它可能只有一個條目。

暫無
暫無

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

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