2013-01-23 28 views
0

我在我的数据库中有4个表格,即餐厅,美食,设施,菜肴。我创建了一个表格适配器,它从这些表格返回数据。现在我必须根据用户对美食,设施或菜肴的选择过滤数据,并返回最终的餐厅。这里是我的查询:在.net中过滤来自多个表的数据

public string alldata(string location, string cuisines, string facility) 
    { 
     location = location.Replace('|', ','); 
     facility = facility.Replace('|', ','); 
     cuisines = cuisines.Replace('|', ','); 
     string loc; string data = null; int id; 
     DataSet3.DataTable1DataTable all = getall.GetAllData(); 

     IEnumerable<DataRow> query = from resturants in all.AsEnumerable() 

            where ((location.Contains(resturants.City)) && (facility.Contains(resturants.FacilityName) && (cuisines.Contains(resturants.Type)))) 
            select resturants; 
     foreach (DataSet3.DataTable1Row item in query) 
     { 
      name = item.Name; 
      loc = item.Location; 

      id = item.RestaurantID; 
      data += name + "%" + loc +"%"+id+ "?"; 
     } 
     return data; 


    } 

此查询返回重复条目,它不适用于选择。我被卡住了。请帮帮我。

回答

0
IEnumerable<DataRow> query = (from resturants in all.AsEnumerable() 

             where ((location.Contains(resturants.City)) && (facility.Contains(resturants.FacilityName) && (cuisines.Contains(resturants.Type)))) 
             select resturants).Distinct() 

u能在all.AsEnumerable(),其中location.Contains(resturants.City)&& facility.Contains使用DISTINCT()运算符来获得不同的记录中的LINQ

+0

IEnumerable的查询=(从resturants (resturants.FacilityName)&& cuisines.Contains(resturants.Type))。Distinct()...用一个括号尝试你的语句可能会有帮助吗? – user1974729

+0

不,它仍然无法正常工作。重复的条目没有出现,但过滤不正确,因为AND条件工作不正常 –

+0

AND正在工作。告诉我,当我通过一个以上的设施时,我怎么才能得到正确的结果。如果我通过两个设施,结果应该包含两个设施不只是一个。我怎样才能做到这一点? –

相关问题