當我有一個問題,使用功能,這是非常奇怪的,我只是:LINQ到實體無法識別方法「System.String [] ToArray的[字符串]使用SqlQuery類方法
使用C#MVC框架4
我有一個庫類,我調用控制器內聲明此功能:
public IQueryable<Bus> Search(string[] states)
{
// Give all the buses that are inside the list of states that i giving you, no matter upper case or lower case
IQueryable<Bus> query = this.context.Buses;
if (states.Length > 0)
{
query = query.Where(b => states.Select(s => s.ToLower()).ToArray().Contains(b.State.ToLower()));
}
return query;
}
當我使用此功能執行動作我得到的錯誤:
LINQ to Entities does not recognize the method '**System.String[] ToArray[String]**
...
...
...
但有一種情況例外,如果我改變這樣的代碼(使用任何事情之前SqlQuery類功能):
public IQueryable<Bus> Search(string[] states)
{
// Give all the buses that are inside the list of states that i giving you, no matter upper case or lower case
IQueryable<Bus> query = this.context.Buses.SqlQuery("SELECT * FROM Buses").AsQueryable();
if (states.Length > 0)
{
query = query.Where(b => states.Select(s => s.ToLower()).ToArray().Contains(b.State.ToLower()));
}
return query;
}
當我執行相同的操作是沒有問題的。有人知道爲什麼嗎?
我知道功能類SqlQuery返回DbSqlQuery對象,但在那之後我變換對象爲可查詢出於某種原因,這個對象仍然允許我使用ToArray的功能。
有沒有辦法做同樣的事情,而不使用SqlQuery函數?我試圖導入所有這些軟件包(包括在該DbSqlQuery類聲明希望有聲明的擴展,但沒有):
using System;
using System.Collections;
using System.Collections.Generic;
using System.ComponentModel;
using System.Diagnostics.CodeAnalysis;
任何幫助嗎?建議?什麼東西?
在此先感謝。
有一個愉快的一天:)
謝謝,這很清楚我會尋找更好的方法來管理和上傳解決方案。 – 2014-09-03 05:23:48