回答

收藏

在查询结果上加入列表时的Linq异常

技术问答 技术问答 242 人阅读 | 0 人回复 | 2023-09-12

我有一个清单:
) t" F/ @( x3 o* }) |List lstClass1;其中MyClass具有两个简单的字符串属性:
# \- X# C* V1 K) ]* Y* Pclass MyClass{   public string property1 { get; set; }   public string property2 { get; set; }}我在数据库MyTable上面有一个查询表,其中有两个字符串类型列:: {# Q; V) }) q6 R7 ^1 y1 _* r
MyTable   column MainKey   column AlternativeKey对于我的脚本,我必须选择数据库和列表之间的连接,并遵循以下规则:如果AlternativeKey存在,则AlternativeKey中的前4个字符等于MyClass.property1或MyClass.Property二、选行;否则,选行。/ }" ^; [2 Z) t, e3 Z; s# _
MainKey前四个字符等于MyClass.property1或MyClass.Property2.这是我的实现:
' ^- p* f6 f* m1 E+ t5 DIQueryable source = getMyTable();List lstClass1 = getListClass();IQueryable qMyClassList = lstClass1.AsQueryable();IQueryable selAlternative = from alt in source                                     join cl1 in qMyClassList on                                     alt.AlternativeKey.Substring(0,4)                        equals cl1.property                                                                                                          join cl2 in qMyClassList on                                     alt.AlternativeKey.Substring(0,4)4)                                                                                                                                                                         equals cl2.property 2                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      where alt.AlternativeKey != null && alt.AlternativeKey.Length >=                                                                                                                                                                                                                 select alt;IQueryable selMain = from main in source                                     join cl1 in qMyClassList on                                     main.MainKey.Substring(0,4)4)                                                                                                                                                                         equals cl1.property                                                                                                          join cl2 in qMyClassList on                                     main.MainKey.Substring(0,4)4)                                                                                                                                                                         equals cl2.property 2                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      where main.AlternativeKey == null && main.MainKey.Length >=                                                                                                                                                                                                                 select main;source = alt.Union(main);当我在执行的时候result当元素上循环时,此查询导致此异常:) R& N$ y9 s+ `& l( D1 T+ I6 @3 i
无法创建的类型是’MyTable   MyClass’常量值。本文仅支持原始类型或枚举类型。( }2 ^. f# g" P& N) m
我做错了什么?6 H; z% R* d7 ]' d( O/ z' C4 U
                                                                8 z! [9 b: A$ W' ^
    解决方案:
分享到:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则