У меня есть этот объект, который я пытаюсь применить фильтр с помощью LINQ в C #, и мне просто интересно, как я могу применить это.
public class glAccts
{
public string fund {get;set;}
public string location {get;set;}
public string costCenter {get;set;}
public string object {get;set;}
}
То, что я хочу сделать - это иметь способ, подобный «следовать»
public async TaskIEnumerable<<glAccts>> applyFilter(IEnumerable<glAccts> filterList)
{
... code to fetch a list of all glAccts -- glUserAccess --...
if (filteredGL.Count() > 0)
{
for( int i = 0; i < filteredGL.Count(); i++ )
{
if ( !string.IsNullOrEmpty(filteredGL.ElementAt(i).fund)) {
var response = glUserAccess.Where(c => c.fund.Contains(filteredGL.ElementAt(i).fund));
}
if ( !string.IsNullOrEmpty(filteredGL.ElementAt(i).location)) {
var response = glUserAccess.Where(c => c.location.Contains(filteredGL.ElementAt(i).location));
}
if ( !string.IsNullOrEmpty(filteredGL.ElementAt(i).costCenter)) {
var response = glUserAccess.Where(c => c.costCenter.Contains(filteredGL.ElementAt(i).costCenter));
}
if ( !string.IsNullOrEmpty(filteredGL.ElementAt(i).objects)) {
var response = glUserAccess.Where(c => c.objects.Contains(filteredGL.ElementAt(i).objects));
}
}
}
}
Примечание: это то, что у меня есть в настоящее время, однако я не уверен, как объединить мой ответ и что, если мой объект пуст. Я также предполагаю, что с LINQ может быть более простой способ.
Я хотел бы создать что-то вроде этого:
SELECT glAccts WHERE (activeGlAccts.fund == filteredList[i].fund AND activeGlAccts.location == filteredList[i].location activeGlAccts.costCenter == filteredList[i].costCenter AND activeGlAccts.object == filteredList[i].object ) OR (activeGlAccts.fund == filteredList[i].fund AND activeGlAccts.location == filteredList[i].location activeGlAccts.costCenter == filteredList[i].costCenter AND activeGlAccts.object == filteredList[i].object )
Примечание: между каждой отфильтрованной опцией будет ИЛИ, и каждый элемент будет сгруппирован по И