gpt4 book ai didi

c# - 多个表中具有相同名称的列导致 SubSonic Select 出现问题

转载 作者:搜寻专家 更新时间:2023-10-30 21:55:04 25 4
gpt4 key购买 nike

还有其他类似的问题(至少我见过 2 个),但我无法使用它们解决这个问题。

现在的问题是:我有 3 个表,我只需要从中选择 4 列。我正在使用 InnerJoin,它运行良好。当我将 Where 添加到此 Select 时,问题就开始了。我在两个表中有一个名为“名称”的列。如果我简单地添加

.Where("Name").Like("A%")

它说“......不明确的列名......”

如果我使用完全限定的列名(表以列名为前缀),它说必须声明参数@TABLE_NAME

  SqlQuery sq = new Select(Tables.TableOne + "." + TableOne.Columns.MemberId + 
" AS MemberId",
Tables.TableTwo + "." + TableTwo.Columns.Name + " AS MemberName",
Tables.TableOne + "." + TableOne.Columns.ExpiryOn + " AS MembershipExpiresOn",
Tables.TableFour + "." + TableFour.Columns.Name + " AS Country")
.From(DAL.Tables.TableOne)
.InnerJoin(Tables.TableTwo)
.InnerJoin(Tables.TableThree)
.InnerJoin(Tables.TableFour, TableFour.Columns.CountryCode,
Tables.TableThree, TableThree.Columns.CountryOfBirth).
sq.Where(Tables.TableTwo + "." + TableTwo.Columns.Name).Like("A%");

我也尝试传递硬编码字符串,但没有任何效果!

最佳答案

如果您将列对象传递给 Where 语句,SubSonic 将使用它的完全限定名称而不是构建字符串。您可以在对象上找到作为静态属性的列,因此在这种情况下,如果您有一个名为“TableOne”的对象,您可以使用“TableOne.NameColumn”并将其传递到 Where() 中:

...
sq.Where(TableTwo.NameColumn).Like("A%");

关于c# - 多个表中具有相同名称的列导致 SubSonic Select 出现问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1061851/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com