2009-08-30 4 views
0

У меня есть сайт, на котором у меня есть база данных людей, и у каждого человека может быть несколько запросов, которые обрабатываются между отношением друг к другу между таблицей лиц и таблицей интересов. На сайте я хочу иметь сераш, где у вас может быть несколько вариантов выбора интересов, и пользователь может выбрать столько, сколько захочет. То, что я хочу вернуть, - это набор записей всех лиц, которые имеют какие-либо интересы, содержащиеся в выбранных вариантах. Мой код C# asp.net и выглядит примерно так до сих пор:Linq to SQL Records, где идентификатор ребенка в списке

personResults = (from p in data.Persons 
       orderby p.lastName, p.firstName 
       select p); 

И я хочу, чтобы добавить что-то вроде этого, хотя я знаю, что последнюю строку в следующем коде полностью поддельный. Предположим, что интересы - это мой идентификатор блока множественного выбора.

List<int> interestIdList = new List<int>(); 
    if (interest.GetSelectedIndices().Length > 0) { 
     foreach(int selectedIndex in interest.GetSelectedIndices()){ 
     interestIdList.Add(int.Parse(interest.Items[selectedIndex].Value)); 
    } 
    personResults = personResults.Where(x => interestIdList.Contains(x.Interests[].interestID)); 
} 

Проблема в том, что последняя строка кода. Поскольку x.Interests - это коллекция объектов интереса из базы данных, я не могу получить доступ к их запросуID (как теперь код, к которому относится идентификатор интересующих предметов, если у человека есть 5 интересов). Если это поможет, я могу использовать свой список идентификаторов интересов для создания списка объектов интереса, но я все еще не могу понять, как построить запрос.

Снова заявить о своей цели. Я хочу, чтобы любой человек, у которого есть интерес, где идентификатор интересов находится в массиве интересовIdList. Они не все должны соответствовать; пока есть хотя бы одно общее значение, я хочу запись.

ответ

1

Если соответствующие отношения из таблицы лиц к «personsWithInterests» таблицы в таблицу интересов устанавливается в DBML, вы можете попробовать это:

ArrayList ids = new ArrayList(); 
foreach (int index in interest.GetSelectedIndices()) 
{ 
    ids.Add(interest.Items[index].Value); 
} 
string[] idArray = (string[])ids.ToArray(typeof(string)); 
var personsWithInterests = (from pi in data.PersonInterests where idArray.Contains(pi.Interest.Id.ToString()) select pi.Person).Distinct(); 
+0

Спасибо это у меня на правильном пути. В результате работала с моим списком идентификаторов интересов и выполняла запрос, который вытащил все personInterests с соответствующими идентификаторами из таблицы соединений, а затем выбрал personInterests.person Затем мне пришлось взять результаты и создать массив людей ID, который я мог бы использовать в моей статье в моем запросе, который возвращал людей. – 2009-09-02 03:28:27

Смежные вопросы