Исключение нулевого указателя - это индикатор того, что вы используете объект, не инициализируя его.
Например, ниже - класс ученика, который будет использовать его в нашем коде.
public class Student {
private int id;
public int getId() {
return this.id;
}
public setId(int newId) {
this.id = newId;
}
}
Приведенный ниже код дает вам исключение с нулевым указателем.
public class School {
Student obj_Student;
public School() {
try {
obj_Student.getId();
}
catch(Exception e) {
System.out.println("Null Pointer ");
}
}
}
Поскольку вы используете Obj_Student
, но вы забыли инициализировать его, как в правильном коде, показанном ниже:
public class School {
Student obj_Student;
public School() {
try {
obj_Student = new Student();
obj_Student.setId(12);
obj_Student.getId();
}
catch(Exception e) {
System.out.println("Null Pointer ");
}
}
}
Это - своего рода позор, который Содержит, не поддерживается в Linq к Объектам .
В и СОЕДИНЕНИЕ не тот же оператор (Фильтрующий В никогда изменениях кардинальность запроса).
Обновление: узнал, как сделать это. И EF генерирует соответствующий SQL на базе данных. Я не уверен, ли это для EF4 только, но я получил подсказку от Платформы Объекта 4.0 Рецепта
<час>var listOfIds=GetAListOfIds();
var context=CreateEntityFrameworkObjectContext();
var results = from item in context.Items
where listOfIds.Contains(item.Category.Id)
select item;
//results contains the items with matching category Ids
, Этот запрос генерирует корректное в пункте на стороне сервера. Я не протестировал его с EF 3.5, но это действительно работает с EF4.
NB: значения, переданные в в пункте, НЕ являются параметрами, так удостоверьтесь, что Вы проверяете свои исходные данные.
Да это действительно переводит в SQL, это генерирует стандартный оператор IN как это:
ВЫБОР [t0]. [col1] ОТ [таблицы] [t0], ГДЕ [col1] В ('Оценивают 1', 'Значение 2')
Используя, где метод не делает работы alway
var results = from p in db.Products
where p.Name == nameTextBox.Text
select p;
FYI:
Если вы используете ESql, вы можете использовать его в работе. У меня нет VS 2008 Со мной но код должен быть примерно таким:
var ids = "12, 34, 35";
using (context = new Entites())
{
var selectedProducts = context.CreateQuery<Products>(
String.Format("select value p from [Entities].Products as p
where p.productId in {{{0}}}", ids)).ToList();
...
}