簡體   English   中英

LinQ中的動態變量

[英]dynamic var in LinQ

我需要一些與linq dynamic等效的東西。 我想從數據庫中的類型T返回所有活動數據。 問題在於,並非所有表都具有“活動”狀態。 所以我需要這樣的東西:

public static List<T> get<T>() where T : class
{
    if (typeof(T).GetProperty("Activo")!=null)
    {
        return (from c in context.Set<T>().AsQueryable()
                where c.Activo //I know for sure it have an Activo property
                select c).ToList();
    }
    else
    {
    return (from c in context.Set<T>().AsQueryable()
            select c).ToList();
    }         
}

如何強制LinQ使用“ Activo”屬性? 就像使用dynamic變量一樣

接口是不可能的,因為我需要傳遞無法實現它的方法類型

你必須用

public static List<T> get<T>() where T : class
{
    var type = typeof(T);
    var prop = type.GetProperty("Activo")
    if (prop!=null)
    {
        return (from c in context.Set<T>().AsQueryable()
            where prop.GetValue(c, null)=="xyz123"
            select c).ToList();
    }
    else
    {
        return (from c in context.Set<T>().AsQueryable()
            select c).ToList();
    }         
}

但是,我不喜歡使用反射,因為如果您更改屬性的名稱,反射代碼將中斷。 我更喜歡將實現特定屬性的接口掛接到類上,然后查看我的實例(進行比較)是否實現了該接口。

暫無
暫無

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

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