Your request seems to do this:
from k in collection
where k.Key == "keyName"
orderby ((MyObject)k)["PropertyIndex"]
select k.Value
and you could add additional sentences, for example:
from k in collection
where k.Key == "keyName"
&& k.OtherProperty == OtherValue
orderby ((MyObject)k)["PropertyIndex"]
select k.Value
. ( , ), .OrderBy(). , , , ():
.OrderBy( e => e.Property1 ).OrderBy( e => e.Property2 )
"" , :
var query = (from k in collection select k);
query = query.Where( e => e.Property1 == "value" );
var orderedQuery = query.OrderBy( e => e.Property1 );
orderedQuery = query.Orderby( e => e.Property2 );
var result = orderedQuery.Select( e => e.Value ).Single();
, . , IQueriable<T>, orderQuery IOrderedQueriable<T>, ( ) var.