使用 LINQ to SQL 在字符串中搜索列表对象
search list objects inside strings using LINQ to SQL
我有一个这样的字符串列表
List<string> list1 = new List<string>();
例如我的列表是
{one , two , three , four , five}
在数据库中我有一个 string
这样的
"five-six-seven-eight"
如何使用 Linq to SQL 在数据库和列表中的字符串之间进行搜索。例如,我的查询搜索应该是正确的,因为 "five" 在两者上都很常见。
我的查询是这样的:
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
};
您可以考虑使用 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
};
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
中,则为真。这样您就不必考虑拆分字符串(这在数据库中很难做到)。
我有一个这样的字符串列表
List<string> list1 = new List<string>();
例如我的列表是
{one , two , three , four , five}
在数据库中我有一个 string
这样的
"five-six-seven-eight"
如何使用 Linq to SQL 在数据库和列表中的字符串之间进行搜索。例如,我的查询搜索应该是正确的,因为 "five" 在两者上都很常见。 我的查询是这样的:
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
};
您可以考虑使用 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
};
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
中,则为真。这样您就不必考虑拆分字符串(这在数据库中很难做到)。