C#使用Linq进行全文搜索
我想在win forms应用程序中进行全文搜索C#使用Linq进行全文搜索,c#,.net,linq,C#,.net,Linq,我想在win forms应用程序中进行全文搜索 public static IEnumerable<DataRow> GetPartDataForFullTextSearch(string text1) { using (cEntity context = new cEntity()) { var query = ( from i in context.tblparts join s in context
public static IEnumerable<DataRow> GetPartDataForFullTextSearch(string text1)
{
using (cEntity context = new cEntity())
{
var query = (
from i in context.tblparts
join s in context.tblpartstatus on i.partstatus
equals s.id
join l in context.tblwarehouse on i.partId
equals l.partId
join p in context.tblwarehouseplace on l.warehouseId
equals p.WhId
orderby i.partID
select new Part
{
PartNumber = i.partID,
PartName = i.partName,
OldPartNo = i.partIdOld,
Comment = i.comment,
Hbv = (long)i.HBVNr,
Status = (int)i.partstatus,
Building = p.building,
Room = p.room,
Shelf = p.shelf,
CaseOfPart = p.case
}).Distinct() as IEnumerable<DataRow>;
var results =
from matchingItem in query
where Regex.IsMatch(matchingItem.Field<string>("partName"), text1)
select matchingItem;
var list = results.ToList();
return list;
}
}
怎么了?
是否可以筛选多个字段?您不能将
IQueryable
强制转换为IEnumerable
。取下铸件,然后进行操作
Regex.IsMatch(matchingItem.partName), text1)
您使用哪个O/RM?LINQ到SQL,实体框架,还有其他什么吗?谢谢,但是在删除强制转换之后。。。我收到错误消息“NotSupportedException”?这是因为
Regex.IsMatch
现在被视为查询的一部分,EF(我认为您使用的)无法将其转换为SQL。但是,您可以通过在Distinct()
之后应用ToList()
来解决这个问题。
Regex.IsMatch(matchingItem.partName), text1)