加入列表,我有一個列表:LINQ的異常,當一個查詢結果
List<MyClass> lstClass1;
如果MyClass的有2個簡單的字符串屬性:
class MyClass
{
public string property1 { get; set; }
public string property2 { get; set; }
}
而且我對DB,MyTable的表,至查詢,其中有兩個字符串類型的列:
MyTable
column MainKey
column AlternativeKey
對於我的劇本,我必須選擇加入DB和名單,與弗洛wing規則:如果AlternativeKey存在,如果AlternativeKey中的前4個字符等於MyClass.property1或MyClass.Property2,則選擇該行;否則,如果MainKey中的前4個字符等於MyClass.property1或MyClass.Property2,則選擇該行。這是我的實現:
IQueryable<MyTable> source = getMyTable();
List<MyClass> lstClass1 = getListClass();
IQueryable<MyClass> qMyClassList = lstClass1.AsQueryable<MyClass>();
IQueryable<MyTable> selAlternative = from alt in source
join cl1 in qMyClassList on
alt.AlternativeKey.Substring(0, 4)
equals cl1.property1
join cl2 in qMyClassList on
alt.AlternativeKey.Substring(0, 4)
equals cl2.property2
where alt.AlternativeKey != null && alt.AlternativeKey.Length >= 4
select alt;
IQueryable<MyTable> selMain = from main in source
join cl1 in qMyClassList on
main.MainKey.Substring(0, 4)
equals cl1.property1
join cl2 in qMyClassList on
main.MainKey.Substring(0, 4)
equals cl2.property2
where main.AlternativeKey == null && main.MainKey.Length >= 4
select main;
source = alt.Union(main);
在執行中,這個查詢提出這個異常,當我循環的結果元素:
無法創建類型爲「MyTable的+ MyClass的」一個恆定值。在此上下文中僅支持 基元類型或枚舉類型。
我做錯了什麼?
請勿在查詢中使用相等運算符(「==」)。 –