检查对象是否为IQueryable或IEnumerable类型

时间:2018-04-23 10:10:02

标签: c# linq iqueryable

我有这样的声明:

IEnumerable<Person> persons= context.Persons.Where(/*SomeCondition*/);

它已声明为IEnumerable<Person>,但已使用IQueryable<Person>进行实例化。我了解IQueryable<T>继承自IEnumerable<T>

为了重新使用,我创建了一个接受IEnumerable而不是分别接受IEnumerableIQueryable的两种方法的方法:

public IEnumerable<PersonInfo> GetPersonInfo(IEnumerable<Person> persons)
{ 
    persons = persons.Where(/*Some condition*/);
    IEnumerable<Person>  persons = persons.GroupBy(/*based on some property*/);

    /*Here i want check value type of persons is IQueryable or not*/

    return persons;
}

在消费方面,我有:

IQueryable<Person> persons= context.Persons.Where(/*condition*/);
IQueryable<PersonInfo> result GetPersonInfo(persons.AsEnumerable()).AsQueryable();

对于In-Memory Collection,我有:

List<Person> persons = new List<Person> { new Person {}};
IEnumerable<Person> result = GetPersonInfo(persons);

使用GetPersonInfo方法,我如何检查persons是否为IQueryable

1 个答案:

答案 0 :(得分:1)

很容易成为解决方案,但如果我能正确理解你的问题......

if (persons is IQueryable)