[英]Join using LINQ between two tables, return records from only one of them
這是我的代碼:
public IEnumerable<IUIUPCItemShort> GetActiveWithDefaultCost()
{
var query = from upc in DataManagerFactory.Get().Manage<IUPCItem>().GetAll()
join inv in DataManagerFactory.Get().Manage<IInventory>().GetAll() on upc.UPCID equals inv.UPCID
where inv.ExitDate == null
&& upc.UnitCost == null
select upc;
return
query.Cast<IUIUPCItemShort>().ToList();
基本上,我正在嘗試在兩個表, UPC
和Inventory
,並且希望只有一個滿足WHERE
條件的UPC
列表,因為我只想向用戶顯示UPC
列表。 我顯然做了一些非常錯誤的事情,因為我得到了這樣的信息:
無法將類型為“System.Linq.Expressions.MethodCallExpressionN”的對象強制轉換為“SubSonic.Linq.Structure.ProjectionExpression”。
我認為問題出在我的Linq代碼中,特別是在select upc;
我該怎樣做我想要完成的事情?
謝謝。
您的查詢是IUPCItem
項的查詢,而不是IUIUPCItemShort
項的查詢。 看起來他們的查詢提供程序似乎不知道如何轉換該轉換的Cast
操作。
如果你知道IUPCItem
在你的C#代碼轉換為一個IUIUPCItemShort
然后iyou可能只是想避免的查詢提供嘗試處理的Cast
。 確保它在Linq to Objects中完成,如下所示:
return query.AsEnumerable().
Cast<IUIUPCItemShort>()
.ToList();
如果這不起作用,則意味着該類型實際上不可隱式轉換; 您需要確定如何從IUPCItem
正確獲取IUIUPCItemShort
的實例,可能創建一個方法來處理您使用Select
調用的轉換。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.