具有单独列值的Lambda表达式

时间:2014-08-18 17:02:00

标签: c# asp.net-mvc lambda

我正在尝试使用查询来处理用户输入。我是C#和lambdas的新手,对于基本问题我很抱歉,但我遇到了障碍。我在一个单独的字段中获取用户的地址输入,确切地说是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中的值,但我想知道是否有办法获取与该列值相关联的其他值,例如街道名称,而无需用户输入值。

如果不清楚,我很抱歉。

2 个答案:

答案 0 :(得分:1)

  

如果有办法获得其他相关的值

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();

答案 1 :(得分:-3)

我确定通过.Where()和lambda表达式可以做到这一点,但IMO你可以击败LINQ"类似SQL的"语法,即

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