Я бы использовал guava
для этого:
String t = " 111 11 ";
Splitter.on(Pattern.compile("\\s+"))
.omitEmptyStrings()
.split(t)
.forEach(System.out::println);
Вы имеете в виду:
select new MyObject { TicketId = tickets.ticket_id,
Title = tickets.title, ...};
(обратите внимание, что я настроил имена немного, чтобы быть большим количеством C#-idiomatic),
Это - "объектный инициализатор", который создает новое MyObject
(на запись), и присваивает свойства от исходных данных. То, что Вы имели, было "анонимным типом" инициализатор, который не является тем же. Обратите внимание, что, если у Вас есть конструктор не по умолчанию, Вы могли бы также использовать что-то как:
select new MyObject(tickets.ticket_id, tickets.title);
который использует указанного конструктора, передающего в предоставленных значениях от исходных данных.
Это затем будет IQueryable<MyObject>
; Вы не должны звонить .AsQueryable()
. Обратите внимание, что для Вашей функции было бы лучше возвратить введенную форму (IQueryable<MyObject>
) чем невведенный IQueryable
.
Эта строка является синтаксически неправильной:
return ticketDetails.AsQueryable()<myObject>;
и должен читать
return ticketDetails.AsQueryable<myObject>();
Кроме того, Вы создаете анонимные объекты с select new {
, но Вы хотите создать myObject
экземпляры. Корректная реализация была бы похожа на это:
public IQueryable<myObject> getTicketInformation(int ticketID)
{
return from tickets in _context.tickets
join file in _context.file_objects on tickets.ticket_id equals file.source_id
where tickets.ticket_id == ticketID
select new myObject() {
ticket_id = tickets.ticket_id,
title = tickets.title,
care_of_email = tickets.care_of_email,
filename = file.filename
};
}
new SomeClass() { Property = value, ...
синтаксис создает a SomeClass
экземпляр и наборы свойства к данным значениям. Кроме того, Вы могли реализовать конструктора на myObject
класс и вызов это в linq операторе с select new myObject(...)
.
Поскольку Marc заявил, что Вы не создаете экземпляры myObject
когда Ваш запрос выполняется. Но дополнительно Вы не должны бросать его к IQueryable<T>
, statment выбора LINQ возвратится IQueryable<T>
если бросок explicity к IEnumerable<T>
.
Кроме того, будьте осторожны, что от Вашего DataContext не избавились, прежде чем Вы попытаетесь получить доступ к возвращаемым данным. Но я заметил, что Ваш контекст не создается в методе, быть осторожным, что Вы не поддерживаете DataContext слишком долго, это - объект единицы работы и не предназначенное, чтобы быть сохраненным открытым в течение долгих промежутков времени.