C# Linq到SQL连接?

C# Linq到SQL连接?,c#,linq-to-sql,C#,Linq To Sql,我试图在一个表中查询名称,然后使用该结果将主记录拉入DataGridView。因此,我需要做的是从兴趣表中获取名称,这些名称类似于放入文本框中的名称,然后使用这些结果从CaseSelector表中提取数据,并将bindingsource筛选器设置为这些结果。为什么我不能将结果设置为CaseSelector或BindingSourceFilter var results = from CaseSelector in db.CaseSelectors

我试图在一个表中查询名称,然后使用该结果将主记录拉入DataGridView。因此,我需要做的是从兴趣表中获取名称,这些名称类似于放入文本框中的名称,然后使用这些结果从CaseSelector表中提取数据,并将bindingsource筛选器设置为这些结果。为什么我不能将结果设置为CaseSelector或BindingSourceFilter

             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);  

您可以在此处找到LINQ连接查询的示例:

我不知道您的DB模式,但您正在寻找以下内容:

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

您刚刚检索到的是一组有效caseNumberKeys的SQL

你的案例过滤器应该是

caseSelectorBindingSource.Filter = "CaseNumberKey in " + interestsresultsAsSQLSET;
您必须迭代interestsresults并将其转换为SQLSET的字符串表示形式。如果你觉得幸运的话,你可以试着去试试。试试看会发生什么

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

你想加入吗?@JakubKonecki是的,加入。如何从interestresults中提取ID以加入CaseSeclotr?我了解联接查询的工作原理,但不知道如何使用第一个查询的结果与第二个查询联接。好的,我更改了上面的内容以反映联接。如何将其设置为bindingsource.filter???您需要更改select子句,以便检索实际需要的数据。然后让这些数据在你的UI中可见,WidgetHanks Justin!是否需要.size和.append的引用?我显然少了一个!仅将append更改为+=运算符。大小可以是.count或.length检查C intellisense。如果您的interestsresults是一个变量,则必须在interestsresults中使用ForEachO对象来迭代它。如果您可以将其转换为list.toList,那么使用它将更容易。如果您可以这样做,Jakub Konecki的答案将更容易实现。只需修改select以获得所需的列。但也可能存在复制品之类的问题。特别是如果你的案件和利益之间有一对多的关系。但是添加一个groupby将过滤掉这些。