有没有一种方法可以动态地将类型分配给通用linq表达式?

时间:2019-02-08 04:30:56

标签: linq generics reflection

只有在运行时才知道子类型时,是否可以从特定子类型的集合中获取对象?像这样:

word = raw_input('Enter word:')  # raw_input in python 2.x and input in python 3.x

split_word = raw_input('Split at: ')

splitting = word.partition(split_word)


'''Here lets assume,

   word = 'buffalo'
   split_word = 'a'

   Then, splitting variable returns list, storing three value,
           ['buff', 'a', 'lo']

   To get your desire output you need to do some slicing and concatenate some value .
'''

output = '{}\n{}'.join(splitting[0] + splitting[1], splitting[2])
print(output) 

2 个答案:

答案 0 :(得分:1)

我认为您可以使用以下代码:

var result = intenalList.Where(x => x.GetType() == obj.GetType()).FirstOrDefault();

答案 1 :(得分:0)

LINQ具有两种将未知(或父)类型序列转换为子类型CastOfType的操作。

Cast将类型转换应用于每个元素,如果无效则失败。 OfType仅返回可以转换为新类型的元素。

所以

var item = list.OfType<DESIREDTYPE>().FirstOrDefault();