LINQ isn't all that useful for executing side effects, it's primarily intended for querying. In truth, the fact that it has deferred execution so engrained in its behaviour makes it a poor choice for executing side-effects, IMO.
The code you've got looks perfectly fine to me. If you did want to use LINQ though, I doubt you could improve much on:
foreach (var o in obj.Where(i => i.SomeProperty == Something))
{
o.SomeOtherProperty = true;
}
Now, that isn't all that better (arguably worse) than your original.
On the other hand, if you wanted to create a new, streaming sequence with projections of the original items having the desired characteristics, you could do something like:
var projection = obj.Where(i => i.SomeProperty == Something)
.Select(i => new Foo(i) { SomeOtherProperty = true });
// assuming your type has a copy-constructor
EDIT: If you don't want to heed the advice of the experts (read: Eric Lippert), you can write your own extension-method:
public static void Do<T>(this IEnumerable<T> source, Action<T> action)
{
if (source == null)
throw new ArgumentNullException("source");
if (action == null)
throw new ArgumentNullException("action");
foreach (T item in source)
action(item);
}
This will allow you to do:
obj.Where(o => o.SomeProperty == Something)
.Do(o => o.SomeOtherProperty = true);