2013-07-01 6 views
0

Я пытаюсь запросить имена в одной таблице, а затем использовать этот результат, чтобы вытащить основные записи в DataGridView. Так что мне нужно сделать, это получить имена из таблицы интересов, которые похожи на то, что помещено в текстовые поля, а затем использовать эти результаты, чтобы вытащить данные из таблицы CaseSelector и установить для этих результатов фильтр bindingsource. Почему я не могу установить результаты в caseSelectorBindingSourceFilterLinq to SQL JOIN?

   var results = from CaseSelector in db.CaseSelectors 
        from Interest in db.Interests 
        where SqlMethods.Like(Interest.First, txtFirst.Text) && SqlMethods.Like(Interest.Last, txtLast.Text) 
        select CaseSelector; 

caseSelectorBindingSource.Filter = ("CaseNumberKey =" + results); 
+0

Вы хотите присоединиться? –

+0

@JakubKonecki Да, присоединяйтесь. Как я могу вывести идентификатор из интересов, чтобы присоединиться к CaseSeclotr? – korrowan

ответ

1

Вы можете найти примеры для LINQ объединить запросы здесь:

http://code.msdn.microsoft.com/101-LINQ-Samples-3fb9811b

Я не знаю вашей БД схемы, но вы что-то ищет по следующим адресам:

from c in db.Cases 
join i in db.Interest on i.CaseNumberKey equals c.CaseNumberKey 
select c 
+0

Я понимаю, как работают запросы присоединения, но я понятия не имею, как использовать результат первого запроса для соединения со вторым. – korrowan

+0

Хорошо, я изменил это, чтобы отразить соединение. Как установить его в bindingsource.filter ??? – korrowan

+0

Вы захотите изменить предложение select так, чтобы вы извлекали нужные данные. Затем просто сделайте эти данные видимыми в виджетах пользовательского интерфейса. – JustinDanielson

0

То, что вы только что получили, представляет собой набор SQL допустимых caseNumberKeys.

Ваше casefilter должно быть что-то вроде

caseSelectorBindingSource.Filter = "CaseNumberKey in " + interestsresultsAsSQLSET; 

Вам придется перебирать interestsresults и преобразовать его в строковое представление SQLSET. Если вам повезет, вы можете просто попробовать .toString() и посмотреть, что произойдет.

string interestsResultsAsSQLSet = "("; 
//write most of them 
for(int i=0; i<interestsresults.size() - 1; i++) { 
    interestsResultAsSQLSet.append(interestsresults[i] + ","); 
//write the last one, with right paren 
interestsresults.append(interestsresults[interestsresults.size() -1] + ")"); 

Я пишу Java весь день, игнорируя мои основные ошибки языка. : P

+0

Спасибо, Джастин! Есть ли ссылка, необходимая для .size и .append? Я, очевидно, пропустил один! – korrowan

+0

Изменить append только на оператор + =. .size() может быть .count() или .length() Проверьте CELL intellisense. – JustinDanielson

+0

Если ваши интересы представляют собой var, вам придется использовать foreach (объект o в интересах интересов), чтобы перебирать его. Если вы можете перечислить его в список (.toList()), с ним будет проще работать. – JustinDanielson