我有我的模型東西,也許是這樣的:如何從LINQ表達式中調用方法?
public class Person
{
public virtual Guid ID { get; set; }
public virtual string FirstName { get; set; }
public virtual string LastName { get; set; }
//this LazyList takes IQueryable<T> in constructor
public virtual LazyList<Role> Roles { get; set; }
//this method to convert the object that comes from EF to my own model
public static Person FromData(DBPerson dbPerson)
{
if (dbPerson != null)
return new Person
{
ID = dbPerson.ID,
FirstName = dbPerson.FirstName,
LastName = dbPerson.LastName,
};
return null;
}
}
然後在我的倉庫我有方法讓所有的人,但我需要它來給其他私有方法「getRoles的」 LazyList<Role>
性能結果。 我的倉庫看起來是這樣的:
public IQueryable<Person> GetPersons()
{
var list = from dbPerson in context.Persons
select Person.FromData(dbPerson);
// Here is the problem :(
return list;
}
private LazyList<Role> getRoles(GUID userID)
{
var list = from role in db.Roles
where role.UserID == userID
select role.ToModel();
return new LazyList<Role>(list);
}
我想這裏的東西來告訴我要Person.Roles從「getRoles」的方法得到它的值這個LINQ的聲明
也許有人會告訴我放在倉庫轉換dbPerson到我一個人的邏輯,然後把這樣的事情:
public IQueryable<Person> GetPersons()
{
var list = from dbPerson in context.Persons
select new Person{
ID = dbPerson.ID,
FirstName = dbPerson.FirstName,
LastName = dbPerson.LastName,
Roles = getRoles(dbPerson.ID)};
}
OK,將工作,但我真的需要把轉換dbPerson T的邏輯o我的模型採用單獨的方法,因爲我會在我的解決方案中多次提起訴訟。
那麼該怎麼做?
這有點欺騙,但我需要讓我的轉換方法是靜態的。 另一件事,這將使我在存儲庫中設置此方法,但我想在很多地方使用它。不管怎樣,謝謝你 :) – 2010-08-03 09:15:13