我有这样的声明:
IEnumerable<Person> persons= context.Persons.Where(/*SomeCondition*/);
它已声明为IEnumerable<Person>
,但已使用IQueryable<Person>
进行实例化。我了解IQueryable<T>
继承自IEnumerable<T>
。
为了重新使用,我创建了一个接受IEnumerable
而不是分别接受IEnumerable
和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();
对于In-Memory Collection,我有:
List<Person> persons = new List<Person> { new Person {}};
IEnumerable<Person> result = GetPersonInfo(persons);
使用GetPersonInfo
方法,我如何检查persons
是否为IQueryable
?
答案 0 :(得分:1)
很容易成为解决方案,但如果我能正确理解你的问题......
if (persons is IQueryable)