簡體   English   中英

遍歷類屬性 c#

[英]iterate through class properties c#

目前,我有一種方法可以創建一個過濾器,該過濾器在我的 c# 后端使用正則表達式按名稱、地址和年齡進行過濾。 我想刪除 if 條件並改用循環。 我怎樣才能做到這一點?

這是我目前的方法。

private static FilterMethod<Logs> GetFilter(Parameters parameters, DateTime startDate, DateTime endDate)
{
    var filter = Builders<Logs>.Filter.Gte(x => x.Date, startDate);
    
    filter &= Builders<Logs>.Filter.Lte(x => x.Date, endDate);
    
    if (!string.IsNullOrEmpty(parameters.Name)) 
    { 
        filter &= Builders<Logs>.Filter.Regex(
            "Name", 
            new BsonRegularExpression(parameters.Name, "mi")); 
    }
    
    if (!string.IsNullOrEmpty(parameters.Address)) 
    { 
        filter &= Builders<Logs>.Filter.Regex(
            "Address", 
            new BsonRegularExpression(parameters.Address, "mi")); 
    }
    
    if (!string.IsNullOrEmpty(parameters.Age)) 
    { 
        filter &= Builders<Logs>.Filter.Regex(
            "Age", 
            new BsonRegularExpression(parameters.Age, "mi")); 
    }

    return filter;
}

這是我的模型課

    public class Parameters
{
    public string Name { get; set; }

    public string Address { get; set; }

    public string Age { get; set; }
}

這里 startDate 和 endDate 不為空。 我總是從前端傳遞當前日期。

我必須使用字典來獲取輸入參數。 有人可以幫忙嗎?

謝謝!!

目前,我有一種方法可以創建一個過濾器,該過濾器在我的 c# 后端使用正則表達式按名稱、地址和年齡進行過濾。 我想刪除 if 條件並改用循環。 我怎樣才能做到這一點?

這是我目前的方法。

private static FilterMethod<Logs> GetFilter(Parameters parameters, DateTime startDate, DateTime endDate)
{
    var filter = Builders<Logs>.Filter.Gte(x => x.Date, startDate);
    
    filter &= Builders<Logs>.Filter.Lte(x => x.Date, endDate);
    
    if (!string.IsNullOrEmpty(parameters.Name)) 
    { 
        filter &= Builders<Logs>.Filter.Regex(
            "Name", 
            new BsonRegularExpression(parameters.Name, "mi")); 
    }
    
    if (!string.IsNullOrEmpty(parameters.Address)) 
    { 
        filter &= Builders<Logs>.Filter.Regex(
            "Address", 
            new BsonRegularExpression(parameters.Address, "mi")); 
    }
    
    if (!string.IsNullOrEmpty(parameters.Age)) 
    { 
        filter &= Builders<Logs>.Filter.Regex(
            "Age", 
            new BsonRegularExpression(parameters.Age, "mi")); 
    }

    return filter;
}

這是我的模型課

    public class Parameters
{
    public string Name { get; set; }

    public string Address { get; set; }

    public string Age { get; set; }
}

這里 startDate 和 endDate 不為空。 我總是從前端傳遞當前日期。

我必須使用字典來獲取輸入參數。 有人可以幫忙嗎?

謝謝!!

目前,我有一種方法可以創建一個過濾器,該過濾器在我的 c# 后端使用正則表達式按名稱、地址和年齡進行過濾。 我想刪除 if 條件並改用循環。 我怎樣才能做到這一點?

這是我目前的方法。

private static FilterMethod<Logs> GetFilter(Parameters parameters, DateTime startDate, DateTime endDate)
{
    var filter = Builders<Logs>.Filter.Gte(x => x.Date, startDate);
    
    filter &= Builders<Logs>.Filter.Lte(x => x.Date, endDate);
    
    if (!string.IsNullOrEmpty(parameters.Name)) 
    { 
        filter &= Builders<Logs>.Filter.Regex(
            "Name", 
            new BsonRegularExpression(parameters.Name, "mi")); 
    }
    
    if (!string.IsNullOrEmpty(parameters.Address)) 
    { 
        filter &= Builders<Logs>.Filter.Regex(
            "Address", 
            new BsonRegularExpression(parameters.Address, "mi")); 
    }
    
    if (!string.IsNullOrEmpty(parameters.Age)) 
    { 
        filter &= Builders<Logs>.Filter.Regex(
            "Age", 
            new BsonRegularExpression(parameters.Age, "mi")); 
    }

    return filter;
}

這是我的模型課

    public class Parameters
{
    public string Name { get; set; }

    public string Address { get; set; }

    public string Age { get; set; }
}

這里 startDate 和 endDate 不為空。 我總是從前端傳遞當前日期。

我必須使用字典來獲取輸入參數。 有人可以幫忙嗎?

謝謝!!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM