Let's say I have some `MyObject`s and each of them have a `Description` property. I have a list of keywords that I want to use to search through the `MyObject` list. I want to order them in descending order, by the number of keywords that each of their `Description` contains.

Sample input (only showing the `Description` property, note the initial order):

```
"Foo Bar"
"Foo Boo"
"Bar Bar"

```

Sample keywords:

```
"Boo", "Foo"

```

Sample output (only showing the `Description` property, note the final order):

```
"Foo Boo" (matches 2 keywords)
"Foo Bar" (matches 1 keyword)

```

"Bar" "Bar" is not in the results because it matches 0 keywords.

I am currently using this very complicated chain of methods:

```
return keywords.SelectMany(
    x => MyObjects.Where(y => y.Description.ToLowerInvariant().Contains(x.ToLowerInvariant()))
    )
    .GroupBy(x => x)
    .OrderByDescending(x => x.Count())
    .Select(x => x.Key).ToList();

```

As you can see, I am first selecting on `keywords`. I think that as a reader of the code, you would expect to see some transformations to be done on `MyObjects` first. Usually when I write LINQ I try to visualize in my head what the operations will look like. Seeing the keywords being transformed just feels counter-intuitive. I also don't like the nested query in `SelectMany` because it makes the query syntax look very ugly:

```
var query = from keyword in keywords
            from matchedObjects in (from obj in MyObjects where obj.Description.ToLowerInvariant().Contains(keyword.ToLowerInvariant()) select obj)
            group matchedObjects by matchedObjects into sameObjects
            orderby sameObjects.Count() descending
            select sameObjects.Key;
return query.ToList();

```

How can I improve the LINQ query? Ideally:

* no nested queries
* starts with `MyObjects.SomeLINQOperation...` instead of `keywords`.

I would expect there is an easier/more intuitive way because this seems like a trivial thing to do, but I would also accept that there is no easier way if an explanation is provided.