LINQ Store表达式

时间:2017-04-14 05:12:45

标签: c# sql linq

我正在使用LINQ to Entities从SQL中选择数据。

这是我的陈述

 var employee = from p in _context.employee
                      select p;

 employee = employee.Where(p =>   
 Helper.RemoveSpecialCharacters(p.IdentificationNumber).
 Equals(Helper.RemoveSpecialCharacters(search.IdentificationNumber)));

 var Results = employee.ToList();

我正在使用我编写的RemoveSpecialCharacters方法来比较没有特殊字符的比较的两面。

这里我收到错误,Linq-> Entity不支持“RemoveSpecialCharacters”方法,并且它不是有效的商店表达式。

据我所知,它无法翻译为SQL。但是如何使用LINQ进行这样的比较?

RemoveSpecialCharacters方法

 public static string RemoveSpecialCharacters(string str)
    {
        char[] arr = str.Where(c => (char.IsLetterOrDigit(c))).ToArray();

        str = new string(arr);

        return str;
    }

如果将methodname翻译成LINQ存储,那么我怎么能把它放在linq中以便sql理解它。

2 个答案:

答案 0 :(得分:2)

如果您可以在SQL中表达RemoveSpecialCharacters,那么您可以使用SQL视图向您的员工显示计算的IdentificationNumberWithoutSpecialCharacters列,然后对其进行过滤。

您还可以通过为SQL Server创建.NET程序集来重用该方法的C#实现。

答案 1 :(得分:0)

  

.ToList()完成初始数据库查询,并为您提供   内存表示,用于处理和修改对象。

var employee = from p in _context.employee
                      select p.ToList();
string searchIdent = Helper.RemoveSpecialCharacters(search.IdentificationNumber);

 employee = employee.Where(p => 
 Helper.RemoveSpecialCharacters(p.IdentificationNumber).
 Equals(searchIdent));

 var Results = employee;