diff --git a/redfish-core/lib/sensors.hpp b/redfish-core/lib/sensors.hpp
index 2e314ac..ec63945 100644
--- a/redfish-core/lib/sensors.hpp
+++ b/redfish-core/lib/sensors.hpp
@@ -26,6 +26,7 @@
 #include <registries/privilege_registry.hpp>
 #include <sdbusplus/asio/property.hpp>
 #include <utils/json_utils.hpp>
+#include <utils/query_param.hpp>
 
 #include <cmath>
 #include <utility>
@@ -177,7 +178,8 @@
                      const std::vector<const char*>& typesIn,
                      const std::string_view& subNode) :
         asyncResp(asyncResp),
-        chassisId(chassisIdIn), types(typesIn), chassisSubNode(subNode)
+        chassisId(chassisIdIn), types(typesIn), chassisSubNode(subNode),
+        efficientExpand(false)
     {}
 
     // Store extra data about sensor mapping and return it in callback
@@ -187,11 +189,21 @@
                      const std::string_view& subNode,
                      DataCompleteCb&& creationComplete) :
         asyncResp(asyncResp),
-        chassisId(chassisIdIn), types(typesIn),
-        chassisSubNode(subNode), metadata{std::vector<SensorData>()},
+        chassisId(chassisIdIn), types(typesIn), chassisSubNode(subNode),
+        efficientExpand(false), metadata{std::vector<SensorData>()},
         dataComplete{std::move(creationComplete)}
     {}
 
+    // sensor collections expand
+    SensorsAsyncResp(const std::shared_ptr<bmcweb::AsyncResp>& asyncResp,
+                     const std::string& chassisIdIn,
+                     const std::vector<const char*>& typesIn,
+                     const std::string_view& subNode, bool efficientExpand) :
+        asyncResp(asyncResp),
+        chassisId(chassisIdIn), types(typesIn), chassisSubNode(subNode),
+        efficientExpand(efficientExpand)
+    {}
+
     ~SensorsAsyncResp()
     {
         if (asyncResp->res.result() ==
@@ -252,6 +264,7 @@
     const std::string chassisId;
     const std::vector<const char*> types;
     const std::string chassisSubNode;
+    const bool efficientExpand;
 
   private:
     std::optional<std::vector<SensorData>> metadata;
@@ -2524,7 +2537,8 @@
 
                 nlohmann::json* sensorJson = nullptr;
 
-                if (sensorSchema == sensors::node::sensors)
+                if (sensorSchema == sensors::node::sensors &&
+                    !sensorsAsyncResp->efficientExpand)
                 {
                     sensorsAsyncResp->asyncResp->res.jsonValue["@odata.id"] =
                         "/redfish/v1/Chassis/" + sensorsAsyncResp->chassisId +
@@ -2535,7 +2549,11 @@
                 else
                 {
                     std::string fieldName;
-                    if (sensorType == "temperature")
+                    if (sensorsAsyncResp->efficientExpand)
+                    {
+                        fieldName = "Members";
+                    }
+                    else if (sensorType == "temperature")
                     {
                         fieldName = "Temperatures";
                     }
@@ -2599,6 +2617,16 @@
                                                  sensorsAsyncResp->chassisId));
                         }
                     }
+                    else if (fieldName == "Members")
+                    {
+                        tempArray.push_back(
+                            {{"@odata.id",
+                              "/redfish/v1/Chassis/" +
+                                  sensorsAsyncResp->chassisId + "/" +
+                                  sensorsAsyncResp->chassisSubNode + "/" +
+                                  sensorName}});
+                        sensorJson = &(tempArray.back());
+                    }
                     else
                     {
                         tempArray.push_back(
@@ -2621,7 +2649,17 @@
             if (sensorsAsyncResp.use_count() == 1)
             {
                 sortJSONResponse(sensorsAsyncResp);
-                if (sensorsAsyncResp->chassisSubNode == sensors::node::thermal)
+                if (sensorsAsyncResp->chassisSubNode ==
+                        sensors::node::sensors &&
+                    sensorsAsyncResp->efficientExpand)
+                {
+                    sensorsAsyncResp->asyncResp->res
+                        .jsonValue["Members@odata.count"] =
+                        sensorsAsyncResp->asyncResp->res.jsonValue["Members"]
+                            .size();
+                }
+                else if (sensorsAsyncResp->chassisSubNode ==
+                         sensors::node::thermal)
                 {
                     populateFanRedundancy(sensorsAsyncResp);
                 }
@@ -2706,9 +2744,12 @@
             processSensorList(sensorsAsyncResp, sensorNames);
             BMCWEB_LOG_DEBUG << "getChassisCb exit";
         };
-    sensorsAsyncResp->asyncResp->res.jsonValue["Redundancy"] =
-        nlohmann::json::array();
-
+    // SensorCollection doesn't contain the Redundancy property
+    if (sensorsAsyncResp->chassisSubNode != sensors::node::sensors)
+    {
+        sensorsAsyncResp->asyncResp->res.jsonValue["Redundancy"] =
+            nlohmann::json::array();
+    }
     // Get set of sensors in chassis
     getChassis(sensorsAsyncResp, std::move(getChassisCb));
     BMCWEB_LOG_DEBUG << "getChassisData exit";
@@ -2923,6 +2964,7 @@
 
 namespace sensors
 {
+
 inline void getChassisCallback(
     const std::shared_ptr<SensorsAsyncResp>& asyncResp,
     const std::shared_ptr<boost::container::flat_set<std::string>>& sensorNames)
@@ -2958,28 +3000,50 @@
 {
     BMCWEB_ROUTE(app, "/redfish/v1/Chassis/<str>/Sensors/")
         .privileges(redfish::privileges::getSensorCollection)
-        .methods(boost::beast::http::verb::get)(
-            [&app](const crow::Request& req,
-                   const std::shared_ptr<bmcweb::AsyncResp>& aResp,
-                   const std::string& chassisId) {
-                if (!redfish::setUpRedfishRoute(app, req, aResp->res))
-                {
-                    return;
-                }
+        .methods(
+            boost::beast::http::verb::get)([&app](
+                                               const crow::Request& req,
+                                               const std::shared_ptr<
+                                                   bmcweb::AsyncResp>& aResp,
+                                               const std::string& chassisId) {
+            query_param::QueryCapabilities capabilities = {
+                .canDelegateExpandLevel = 1,
+            };
+            query_param::Query delegatedQuery;
+            if (!redfish::setUpRedfishRouteWithDelegation(
+                    app, req, aResp->res, delegatedQuery, capabilities))
+            {
+                return;
+            }
 
-                BMCWEB_LOG_DEBUG << "SensorCollection doGet enter";
+            if (delegatedQuery.expandType != query_param::ExpandType::None)
+            {
+                // we perform efficient expand.
+                auto asyncResp = std::make_shared<SensorsAsyncResp>(
+                    aResp, chassisId,
+                    sensors::dbus::paths.at(sensors::node::sensors),
+                    sensors::node::sensors,
+                    /*efficientExpand=*/true);
+                getChassisData(asyncResp);
 
-                std::shared_ptr<SensorsAsyncResp> asyncResp =
-                    std::make_shared<SensorsAsyncResp>(
-                        aResp, chassisId,
-                        sensors::dbus::paths.at(sensors::node::sensors),
-                        sensors::node::sensors);
-                // Get set of sensors in chassis
-                getChassis(
-                    asyncResp,
-                    std::bind_front(sensors::getChassisCallback, asyncResp));
-                BMCWEB_LOG_DEBUG << "SensorCollection doGet exit";
-            });
+                BMCWEB_LOG_DEBUG
+                    << "SensorCollection doGet exit via efficient expand handler";
+                return;
+            };
+
+            // if there's no efficient expand available, we use the default
+            // Query Parameters route
+            auto asyncResp = std::make_shared<SensorsAsyncResp>(
+                aResp, chassisId,
+                sensors::dbus::paths.at(sensors::node::sensors),
+                sensors::node::sensors);
+
+            // We get all sensors as hyperlinkes in the chassis (this
+            // implies we reply on the default query parameters handler)
+            getChassis(asyncResp,
+                       std::bind_front(sensors::getChassisCallback, asyncResp));
+            BMCWEB_LOG_DEBUG << "SensorCollection doGet exit";
+        });
 }
 
 inline void requestRoutesSensor(App& app)
