Я пытаюсь объединить два запроса linq с помощью Concat. Но когда я компилирую запрос, я получаю две ошибки.
IQueryable 'не содержит определения для "Concat" и лучшего перегрузочного метода расширения "ParallelEnumerable.Concat(ParallelQuery, IEnumerable)" требует приемника типа "ParallelQuery"
Вторая ошибка: метод all code не возвращает все значения пути
Вот мой интерфейс.
[OperationContract]
[WebInvoke(Method = "GET",
RequestFormat = WebMessageFormat.Json,
ResponseFormat = WebMessageFormat.Json,
//BodyStyle = WebMessageBodyStyle.Bare,
UriTemplate = "/TranscationDetails/{Account_Number}")]
string TranscationDetails(string Account_Number);
Вот реализация.
public string TranscationDetails(string Account_Number)
{
using (HalifaxDatabaseEntities context = new HalifaxDatabaseEntities())
{
var DepositQuery = from x in context.Current_Account_Deposit
where x.Account_Number == Convert.ToInt32(Account_Number)
select x;
var WithdrawQuery = from x in context.Current_Account_Withdraw
where x.Account_Number == Convert.ToInt32(Account_Number)
select x;
var merge = DepositQuery.Concat(WithdrawQuery);//**Error on this line**
}
}
Вам не нужно использовать 2 отдельных запроса, просто создайте один запрос, соединяя 2 таблицы и выберите все необходимые свойства из набора результатов. Затем вы можете поместить его в объект IEnumerable
и использовать JSON-сериализатор, чтобы вернуть ответ JSON из результата запроса:
public string TranscationDetails(string Account_Number)
{
using (HalifaxDatabaseEntities context = new HalifaxDatabaseEntities())
{
var CombinedQuery = (from x in context.Current_Account_Deposit
join y in context.Current_Account_Withdraw
on x.Account_Number equals y.Account_Number
where x.Account_Number == Convert.ToInt32(Account_Number)
select new {
x.Account_Number,
// put other properties here
}).ToList();
var js = new System.Web.Script.Serialization.JavaScriptSerializer();
return js.Serialize(CombinedQuery); // return JSON string
}
}