У меня есть следующие дозвуковые объекты
TInvoiceHeader
TAccountAssociation
Как я могу добиться следующего в LINQ (subsonic)
SELECT * from TInvoiceHeader
WHERE custid IN
(SELECT custid FROM TAccountAssociation
WHERE username = 'a')
Мне нужно связать результаты с GridView.
Обновление: я пытался
Dim accounts As List(Of TAccountAssociation) = _
TAccountAssociation.Find(Function(x) x.UserName = "a")
GridView1.DataSource = TInvoiceHeader.All() _
.Where(Function(x) accounts.Contains(x.custID))
GridView1.DataBind()
Но я получаю ошибку "... у вложенных функций dow не совпадает с сигнатурой делегата"
Обновление:
Я действительно не волнуюсь, получаю это ...
why does this work
Dim accounts() As String = {"N12345", "A12455"}
GridView1.DataSource = TInvoiceHeader.All(). _
Where(Function(c) accounts.Contains(c.custID))
GridView1.DataBind()
Но это не
Dim accounts = TAccountAssociation.Find(Function(x) x.UserName = "a")
GridView1.DataSource = TInvoiceHeader.All(). _
Where(Function(c) accounts.Contains(c.custID))
GridView1.DataBind()
Обновление
В итоге я использовал Fluent Query
GridView1.DataSource = New customerWEBDB().Select.From(Of TInvoiceHeader)_
.Where("custID") _
.In(New customerWEBDB().SelectColumns("custID") _
.From(Of TAccountAssociation) _
.Where("UserName").IsEqualTo("aaa")) _
.ExecuteTypedList(Of TInvoiceHeader)()
GridView1.DataBind()
Надеюсь, кто-нибудь покажет мне что-нибудь получше.