Как сделать “где в значениях” в LINQ-to-Entities 3.5

Исключение нулевого указателя - это индикатор того, что вы используете объект, не инициализируя его.

Например, ниже - класс ученика, который будет использовать его в нашем коде.

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 ");
        }
    }
}
20
задан paqogomez 14 May 2014 в 22:28
поделиться

6 ответов

Это - своего рода позор, который Содержит, не поддерживается в Linq к Объектам .

В и СОЕДИНЕНИЕ не тот же оператор (Фильтрующий В никогда изменениях кардинальность запроса).

1
ответ дан 30 November 2019 в 01:03
поделиться

Обновление: узнал, как сделать это. И 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: значения, переданные в в пункте, НЕ являются параметрами, так удостоверьтесь, что Вы проверяете свои исходные данные.

19
ответ дан 30 November 2019 в 01:03
поделиться

Содержит не поддерживается в EF в это время.

1
ответ дан 30 November 2019 в 01:03
поделиться

Да это действительно переводит в SQL, это генерирует стандартный оператор IN как это:

ВЫБОР [t0]. [col1] ОТ [таблицы] [t0], ГДЕ [col1] В ('Оценивают 1', 'Значение 2')

0
ответ дан 30 November 2019 в 01:03
поделиться

Используя, где метод не делает работы alway

var results = from p in db.Products

             where p.Name == nameTextBox.Text

             select p;
0
ответ дан 30 November 2019 в 01:03
поделиться

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();
    ...
}
1
ответ дан 30 November 2019 в 01:03
поделиться
Другие вопросы по тегам:

Похожие вопросы: