Использование регулярных выражений будет быстрее
function checkIsExcel(file) {
if ((!/.*\.xlsx$/.test(file.name)) && (!/.*\.xls$/.test(file.name)) && (!/.*\.csv$/.test(file.name))) {
return false;
}
return true;
}
В основном вы делаете это правильно. Однако вы должны использовать экземпляр DataContext
для запросов (не очевидно, что DataContext
является экземпляром или именем типа из вашего запроса):
var result = (from a in new DataContext().Persons
where a.Age > 18
select new Person { Name = a.Name, Age = a.Age }).ToList();
Очевидно, Класс Person
- это ваш класс сущностей, созданный LINQ to SQL. Вы должны создать свой собственный класс, если вам нужны только некоторые из столбцов:
class PersonInformation {
public string Name {get;set;}
public int Age {get;set;}
}
var result = (from a in new DataContext().Persons
where a.Age > 18
select new PersonInformation { Name = a.Name, Age = a.Age }).ToList();
Вы можете свободно поменять местами var
на List
здесь, ничего не затрагивая (так как это то, что компилятор делает).
В противном случае, если вы работаете с запросом локально, я предлагаю рассмотреть анонимный тип:
var result = (from a in new DataContext().Persons
where a.Age > 18
select new { a.Name, a.Age }).ToList();
Обратите внимание, что во всех этих случаях , результат
статически типизирован (его тип известен во время компиляции). Последний тип - это List
анонимного класса, созданного компилятором, аналогичный классу PersonInformation
, который я написал выше. Начиная с C # 3.0, в языке нет динамической типизации.
Если вы действительно хотите вернуть List
(что может быть, а может и не быть лучшим вариантом ), вы можете сделать это:
var result = from a in new DataContext().Persons
where a.Age > 18
select new { a.Name, a.Age };
List<Person> list = result.AsEnumerable()
.Select(o => new Person {
Name = o.Name,
Age = o.Age
}).ToList();
Вы также можете объединить приведенные выше утверждения, но я разделил их для ясности.
The issue was in fact that one of the properties was a relation to another table. I changed my LINQ query so that it could get the same data from a different method without needing to load the entire table.
Thank you all for your help!