2016-02-18 2 views
2

У меня есть список строки, как этотсписок поиска объектов внутри строки с помощью LINQ к SQL

List<string> list1 = new List<string>(); 

Например мой список является

{one , two , three , four , five} 

В базе данных у меня есть string как это

"five-six-seven-eight" 

Как я могу использовать Linq to SQL для поиска между моей строкой в ​​базе данных и моим списком. Например, мой запрос поиска должен быть истинным, потому что «пять» является общим для обоих. Мой запрос состоит в следующем:

var q = from p in m.ViewAbuseReports where 
(list1.Contains(p.Abuse.ToString().Split('-')) || list1.Count == 0) 
    select new 
    { 
     Col2 = p.FirstName + " " + p.LastName, 
     Col3 = p.DateTakhalof, 
     Col4 = p.DateReturn 
    }; 
+0

У меня не было вопроса, не любезно ли вы уточните еще кое-что. – Ovis

+1

Кажется, что вам нужна LINQ 'Intersect' – Ian

+0

@Ovis Я хочу найти список строк в строке, Моя строка в базе данных разделена на« - » – mosyflasher

ответ

2

Вы можете рассмотреть возможность использования LINQ Intersect.

var q = from p in m.ViewAbuseReports 
let ps = p.Abuse.ToString().Split('-') 
let i = list1.Intersect(ps).ToList() //here you get if there is any intersect (common elements) between the two `IEnumerable` 
where (i.Count > 0 || list1.Count == 0) 
select new 
{ 
    Col2 = p.FirstName + " " + p.LastName, 
    Col3 = p.DateTakhalof, 
    Col4 = p.DateReturn 
}; 
+2

'Intersect' не будет работать с локальной коллекцией в LinQToSQL. –

+0

Спасибо, братец, он решил мою проблему – mosyflasher

+0

@mosyflasher отлично! Рад, что мое решение соответствует вашим потребностям. ;) – Ian

2
var q = from p in m.ViewAbuseReports where 
(list1.Any(l => p.Abuse.ToString().Contains(l)) || list1.Count == 0) 
select new 
{ 
    Col2 = p.FirstName + " " + p.LastName, 
    Col3 = p.DateTakhalof, 
    Col4 = p.DateReturn 
}; 

Если какой-либо из строк в list1 в p.Abuse это будет правдой. Таким образом, вам не нужно заботиться о разделении строки (что было бы трудно сделать в базе данных).

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