Domanda

Ecco un esempio di associazione di elenchi prelevati Documentazione di Bltoolkit:

from p in db.Product
select new
{
  p.OrderDetails.Count,
  p.ProductName
};

dove

class Product
{
  [PrimaryKey, Identity]
  public int ProductID;

  public string ProductName;

  [Association(ThisKey="ProductID",  OtherKey="ProductID")]
  public List<OrderDetail> OrderDetails;
}

È possibile ottenere un elenco di prodotti con dettagli sull'ordine per ogni prodotto come questo:

from p in db.Product
select new
{
  Details = p.OrderDetails,
  p.ProductName
};

Il codice sopra lancia LinqException con il seguente messaggio:

Impossibile trovare il convertitore per il 'System.collections.generic.list`1 [[OrderDetail, TestProject, versione = 1.0.0.0, Culture = Neutral, PublicKeyToken = Null]]'.

È stato utile?

Soluzione

Usando il normale provider Linq a SQL questo funzionerebbe bene. Con il provider Linq di Bltoolkit non lo so.

Altri suggerimenti

Anche se non ho usato il bltoolkit, potresti provare a usare una classe che definisci piuttosto che fare affidamento su un tipo anonimo.

Cioè, potresti definire una classe chiamata MyOrder che ha proprietà String ProductName e List<OrderDetail> OrderDetails, quindi cambia la tua query Linq in qualcosa di simile:

from p in db.Product
select new MyOrder
{
  OrderDetails = p.OrderDetails,
  ProductName = p.ProductName
};

Non posso garantire che questo funzioni, ma probabilmente vale la pena (a meno che qualcuno non pubblica qualcosa di più definitivo).

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top