1

Win フォーム アプリケーションで全文検索を実行したいと考えています。

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

しかし、結果を受け取りません => ArgumentNullException

それが私が結果を受け取りたい方法です

      private void tbOverviewFullSearch_TextChanged(object sender, EventArgs e)
{
    dgPartOverview.DataSource = 
        DatabaseQueries.D_PartManagement
            .GetPartDataForFullTextSearch(tbOverviewFullSearch.Text);
}

どうしたの?複数のフィールドをフィルタリングすることは可能ですか?

4

1 に答える 1

2

IQueryable<Part>にキャストすることはできませんIEnumerable<DataRow>。キャストを削除して実行します

Regex.IsMatch(matchingItem.partName), text1)
于 2012-10-25T10:12:02.173 に答える