我在Contact类中有一个称为LoadContact()的公共方法。我想使用Linq加载联系人数据,并将值分配给“此”实例。
到目前为止,我有.....
var contact = (from cont in db.Contacts
from note in db.Contacts_Notes.Where(n => n.ContactID == cont.ContactID).DefaultIfEmpty()
where cont.AccountID == this.AccountID && cont.ContactID == this.ContactID
select new Contact
{
AccountID = cont.AccountID,
CompanyName = cont.CompanyName,
ContactID = cont.ContactID,
Firstname = cont.Firstname,
JobTitle = cont.JobTitle,
Lastname = cont.Lastname,
Notes = note.Note
}).SingleOrDefault();
if(contact != null)
{
this.AccountID = contact.AccountID;
this.CompanyName = contact.CompanyName etc etc etc
}
。,..但是这似乎很漫长。如何将结果直接分配给当前实例?
最佳答案
您为什么不将其设为返回新联系人的静态方法,是有原因的?您想要做的方式看起来像是糟糕的设计(取决于您为什么这么做)。
我建议您将其设置为静态,以便可以像这样使用它:
var contact = Contact.Load(...);
代替
var contact = new Contact();
contact.LoadContact(...);
这样,您就可以只返回在查询中找到的联系人,例如:
public static Load(int contactID, int accountID) //If they are integers
{
return (from cont in db.Contacts
from note in db.Contacts_Notes.Where(n => n.ContactID == cont.ContactID).DefaultIfEmpty()
where cont.AccountID == accountID && cont.ContactID == contactID
select new Contact
{
//... stuff
}).SingleOrDefault();
}
关于c# - LinQ to SQL查询数据库并分配给当前实例(此),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/3494323/