第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機(jī)立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何構(gòu)建匿名參數(shù)數(shù)組

如何構(gòu)建匿名參數(shù)數(shù)組

C#
繁星coding 2023-09-16 17:48:41
我有一個疑問string sQuery = string.Format("SELECT {0} FROM vwweb_Orders WHERE CustFID = ?", columns);在這里執(zhí)行var result = await conn.QueryAsync<Order>(sQuery, new { ID = Custid });但是假設(shè)我正在根據(jù)用戶選擇的參數(shù)進(jìn)行搜索。我可以構(gòu)建 where 子句,但如何構(gòu)建匿名數(shù)組呢?new { ID = Custid }我想要類似的東西var params = new {}; if (!String.IsNullOrWhiteSpace(username)) {    params += {username} }
查看完整描述

2 回答

?
智慧大石

TA貢獻(xiàn)1946條經(jīng)驗 獲得超3個贊

如果您確實想要像匿名類型一樣具有參數(shù),則可以使用ExpandoObject:-


dynamic params = new ExpandoObject();


if (!string.IsNullOrWhiteSpace(username)) {

    params.Username = username;

}

或者,如果您想要一個數(shù)組(并且您事先不知道長度),請使用List<string>:-


var paramlist = new List<string>();


if (!string.IsNullOrWhiteSpace(username)) {

    paramlist.Add("username");

}


var params = paramlist.ToArray();

但是,如果您正在構(gòu)造WHERE子句,則無論如何,您的 SQL 語句中將始終具有固定數(shù)量的參數(shù)(或者您也必須動態(tài)構(gòu)造它)。


動態(tài)構(gòu)建過濾查詢時可以使用的另一種方法是:-


SELECT *

FROM vwweb_Orders

WHERE 1=1

AND (@custid IS NULL OR CustFID = @custid)

AND (@xyz IS NULL OR XYZ = @xyz)

-- etc

然后向您的調(diào)用提供所有參數(shù)QueryAsync,如果有任何參數(shù)為空,則它們將在WHERE子句中被跳過。


查看完整回答
反對 回復(fù) 2023-09-16
?
慕尼黑的夜晚無繁華

TA貢獻(xiàn)1864條經(jīng)驗 獲得超6個贊

也許您可以編寫查詢來首先檢查空/空/非零值,否則按如下方式評估實際值:


public async Task<List<Order>> Execute(OrderQuery query)

{


    var sql = $@"SELECT

                    ...

                FROM vwweb_Orders

                WHERE @{nameof(query.CustomerId)} <= 0 OR customer_id = @{nameof(query.CustomerId)}

                    AND ISNULL(@{nameof(query.CustomerName)}, '') = '' OR customer_name = @{nameof(query.CustomerName)}";


    return await conn.QueryAsync<Order>(sql, new { query.CustomerId, query.CustomerName});


}


public class OrderQuery

{

    public int CustomerId { get; set; }

    public string CustomerName { get; set; }

}


public class Order

{

}


查看完整回答
反對 回復(fù) 2023-09-16
  • 2 回答
  • 0 關(guān)注
  • 139 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號