具有单独列值的Lambda表达式

本文关键字:Lambda 表达式 单独列 | 更新日期: 2023-09-27 18:18:26

我试图得到一个查询与用户输入的工作。我是c#和lambda的新手,所以很抱歉基本问题,但我遇到了一个障碍。我得到一个地址输入从一个用户在单独的字段,5个单独的字段是准确的。

  if (!string.IsNullOrEmpty(SessionHandler.StreetNumber))
            {
                allFeatures = layerFindResults.QueryTools.GetAllFeatures(ReturningColumnsType.AllColumns);
                searchResults = allFeatures.Where(f => f.ColumnValues["STREETNUM"].ToLower().Contains(SessionHandler.StreetNumber.ToLower()).Select(f =>new
                                                     {
                                                         StreetNum = f.ColumnValues["STREETNUM"],
                                                         StreetName = f.ColumnValues["STR_NAME"]
                                                     }).ToList());

            }

这适用于获取STREETNUM中的值,但我想知道是否有一种方法可以获得与该列值相关联的其他值,例如街道名称,而无需用户为它们输入值。

如果我没说清楚,我很抱歉。

具有单独列值的Lambda表达式

如果有办法获得与

相关联的其他值

Select是你的朋友。Select创建一个投影,这意味着从一种数据形式转变为另一种。你要做的是使用Select创建一个动态实体,在那里你提取相关的/所需的数据,如这里,它返回城市:

searchResults 
       = allFeatures.Where( ... )
                    .Where( ... )             // Behaves like an `and` between the two where's.
                    .Select(f => new
                    {
                        Street = f.ColumnValues["STREETNUM"],
                        City   = f.ColumnValues["City"]
                    })
                    .ToList();

我确信有一种方法可以使用。where()和lambda表达式来做到这一点,但在我看来,你无法击败LINQ"类sql"语法,即

 searchResults = (from DataType i in allFeatures where f.StreetNum = SessionHandler.StreetNum select i).ToList(); //returns a list of matching objects