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

我有这句话:


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

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


为了实现可重用性,我创建了一个accept方法,IEnumerable而不是分别使用acceptIEnumerable和方法的两个方法IQueryable:


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();

对于内存中收集,我有:


List<Person> persons = new List<Person> { new Person {}};

IEnumerable<Person> result = GetPersonInfo(persons);

在GetPersonInfo方法,我怎么能检查persons是IQueryable或不是?


蝴蝶不菲
浏览 195回答 1
1回答

凤凰求蛊

很容易成为解决方案,但是如果我正确理解了您的问题。if&nbsp;(persons&nbsp;is&nbsp;IQueryable)
打开App,查看更多内容
随时随地看视频慕课网APP