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

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

簡化多個(gè)真假組合條件

簡化多個(gè)真假組合條件

C#
慕桂英546537 2021-07-15 14:11:04
問題是我想從 SQL 表中提取特定記錄并根據(jù)用戶權(quán)限顯示它(這是 5 組合真或假的情況)。有沒有辦法避免為組合的 5 個(gè)特權(quán)為真或假的所有情況編寫 32 個(gè)單獨(dú)的檢查和 32 個(gè)單獨(dú)的 SQL 選擇語句?前任:bool priv1 true|false;bool priv2 true|false;bool priv3 true|false;bool priv4 true|false;bool priv5 true|false;if (priv1 && !priv2 && !priv3 && !priv4 && !priv5){    string sql = "SELECT * FROM table WHERE priv='1'";}等等....編輯:我想提一下,一個(gè)用戶可以擁有多個(gè)權(quán)限,這是主要問題,也是為什么我說 32 個(gè)案例。
查看完整描述

3 回答

?
夢里花落0921

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

將您的權(quán)限值放入數(shù)組中?。∪绻鷪?jiān)持使用當(dāng)前的變量,您可以這樣做:


bool[] privileges = new bool[] { priv1, priv2, priv3, priv4, priv4 };

一旦它們在那里,您就可以使用 LINQ 生成 IN 子句:


var list = privileges

    .Select

    ( 

        (p,i) => new

        { 

            Index = i + 1, //Need to add 1, since array is zero-based

            Value = p 

        } 

    )

    .Where

    ( 

        p => p.Value 

    )

    .Select

    ( 

        p => string.Format("'{0}'", p.Index)

    );


var sql = string.Format

    (

        "SELECT * FROM table WHERE priv IN ({0}) ",

        string.Join(",", list)

    );

這將為您提供以下格式的 SQL 字符串:


SELECT * FROM table WHERE priv IN ('1','2')


查看完整回答
反對 回復(fù) 2021-07-18
?
阿波羅的戰(zhàn)車

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

好吧,我想我會在我自己弄清楚如何做后回答這個(gè)問題,但真的很感謝大家的建議。

它將是純 SQL,就像這樣:

sql = "SELECT * from requestsTable WHERE priv IN (SELECT priv FROM privilegesTable WHERE userID=@userID)


查看完整回答
反對 回復(fù) 2021-07-18
  • 3 回答
  • 0 關(guān)注
  • 213 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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