The answer is - as you may have expected - it depends. The LINQ-operations are usually quite fast unless you are talking millions of objects. However they will produce some garbage that has to be collected eventually. If you perform such operations every frame you may run into GC hiccups. If you run stuff not that often (e.g. only when a player places/removes a house, etc.) this approach should work fine.
If you need maximum performance you may want to have a look at the new DOTS architecture (aka. ECS) in Unity, which allows you to manage large quantities of data fast. That being said - premature optimization is the root of all evil and DOTS is quite the beast to wrap your head around.
I'd start with the LINQ queries, making sure they are not called every frame and maybe some clever caching and only bring in the big guns when I actually have a performance problem.
- Handling Population within a game (unity)
- How do I find the text within a div in the source of a web page using C#
- LINQ Source Code Available
- .NET 4 Code Contracts: "requires unproven: source != null"
- creating Linq to sqlite dbml from DbLinq source code
- Handling very large strings between SQL Server and .NET code +LINQ
- CLRSQL Aggregate function. LINQ Code works within CLR Function but cannot be deploy within Aggregate
- Search by zip code and filter list within specific radius?
- Convert string to decimal within LINQ Average function while handling possible null values
- Can someone tell me why this simple bit of c# code won't work, involves recursively calling method from within itself to get the root category ID
- source code for LINQ 101 samples
- Linq code to get the index of an object in an array from an object within a list
- Refactoring C# code - doing more within Linq
- How to LINQ Query Code First generated EF6 hierarchical entities (entities within entities)?
- List or Array of String Contain specific word in Html Source Code
- Common function to avoid code duplication for handling 2 different type of object
- Images within show c# code that I am confused about
- c# Linq or code to extract groups from a single list of source data
- Handling Next Record nullable reference Controller Code to pass to viewbag
- Convert string to int in one line of code using LINQ
- Code equivalent to the 'let' keyword in chained LINQ extension method calls
- Value cannot be null. Parameter name: source
- Linq code to select one item
- C# - code to order by a property using the property name as a string
- Roslyn failed to compile code
- How do I apply OrderBy on an IQueryable using a string column name within a generic extension method?
- Handling 'Sequence has no elements' Exception
- How to select values within a provided index range from a List using LINQ
- Updating an item property within IEnumerable but the property doesn't stay set?
- Entity-framework code is slow when using Include() many times
- Store value in dictionary or retrieve from concatened key
- Convert to date Format
- "cannot implicitly convert .." when using LINQ Where
- Need a linq to objects query for a nested collection
- Tiny database C# library/code to handle multiple columns of data?
- Highest score data with more than one result - LINQ
- Adding new column and set value from others column in datagridview
- Linq to Entities - JOIN a list with an entity set
- How do I stop EF from generating useless code, does it matter?
- Querying a chain of list of lists with LINQ
- Using LINQ to remove items from a list that do not apear in another list
- Expression cannot contain lambda expressions
- CreateDocumentQuery throws exception when used with LINQ, fine with SQL
- How to sort class list by integer property?
- Returning multiple streams from LINQ query
- Do we need the join clause for outer joins in LINQ?
- Watin IE becomes visible when using a LINQ where
- How can I further simplify this piece of LINQ code
- LINQ Join statement with possible NULL id?
- Orderby month and year using linq