發表文章

目前顯示的是 11月, 2023的文章

List和string的Contains方法, 用法有些不同

List和string的Contains方法, 用法有些不同 List.Contains 檢查列表中是否包含指定元素, 完整比對 // 假設有一個 List<string> 包含一些字串 List<string> stringList = new List<string> { "AA", "AB", "AC", "A" }; // 檢查 List 中是否包含指定的字串 string targetString = "A"; bool containsTarget = stringList.Contains(targetString); //返回True ==> 包含"A" // 檢查 List 中是否包含指定的字串 string targetString = "C"; bool containsTarget = stringList.Contains(targetString); //返回Flase ==> 不包含"C"   string.Contains 檢查一個字串是否包含另一個字串(模糊比對) string text = "Hello, World!"; bool containsHello = text.Contains("Hello"); // 返回 true   整合範例: 使用listB找出listA有符合部份字串的資料 //變數宣告 List<string> listA = new List<string> { "ABC_123", "ABC_456", "EEE_111", "DDD_222" }; List<string> listB = new List<string> { "ABC", "EEE" }; // 使用 LINQ 查詢,找出符合條件的資料 var result = listA.Where(i

JQuery 載入網頁至DIV時, 增加載入失敗CallBack

JQuery 載入網頁至DIV時, 增加載入失敗CallBack $('#div_content').load('_GetList?' + 'AA=' + AA + '&BB=' + BB function (response, status, xhr) { if (status == "error") { var msg = "Error!" + xhr.status + " " + xhr.statusText; alert(msg); } });      

使用LINQ, Lambda達到SQL in 多欄位寫法

使用LINQ, Lambda達到SQL in 多欄位寫法 不能直接對SQL LINQ使用Contains List<string> list_Name = new List<string>() { "Alex", "Peter"}; //不支援Contains語法 //var query = from t1 in db.Table1 // where list_Name.Contains(t1.Name) // select t1; var query = from t1 in db.Table1 select t1; //query = query.Where(x => list_ima01.Contains(x.Ima01)); //不支援Contains語法 query = query.where(x => list_Name.Any(a => a == x.Name); //改用Any var list = query.ToList();   先把SQL LINQ 進行ToList為Object後, 就可以使用Contains List<string> list_AAA = new List<string>() { "123", "456", "789"}; var query = from t1 in AAA select t1; var list = query.ToList(); //先ToList var q2 = list.Where(x => list_AAA.Contains(x.A)); //就可以對Object LINQ使用Contains var list_q2 = q2.ToList();        

JQuery selector範例

JQuery selector範例 取得第一個找到的 li 標籤元素 $("li:first"); //jQuery li:first {} //CSS 取得其 class 屬性值為class1 的 input元素 $("input[class='class1']"); //jQuery input[name='newsletter'] {} //CSS 取得id為container之元素其內部的所有超連結 $(‘#container a’); //jQuery #container a {} //CSS 取得div父元素其下所有的p子元素 $("div > p"); //jQuery div > p {} //CSS 基本選擇器 jQuery 有三個最重要的選擇器,如下: $(“element”):選出所有該 element 的節點 例如: $(“p”) :選出所有<p>的節點 $(“#divId”):選出所有id=divid的節點 $(“.divClass”):選出所有class=divCLass的節點 階層選擇器 階層屬性有以下四種: 物件中的某一種物件(空白):$(‘#div1 p’).addClass(‘d1′); 物件中的所有物件(*):$(‘#div1 *’).addClass("d1); 之後符合條件的第一個(+):$(‘#div1 + p’).addClass(‘d1′); 之後符合的所有(~):$(‘#div1 ~ p’).addClass(‘d1′); 可進來這裡觀看階層選擇器範例: http://jsfiddle.net/divaka/fuHFD/1/ 子元素選擇器 $("ul li:nth-child(2)"); //第 2 個節點 $("ul li:nth-child(odd)"); //所有奇數子節點 $("ul li:nth-child(3n + 1)"); //1, 4, 7 … 個節點 $("div span:first-child") //所有的div元素的第一個子節點 $("div

JQuery, 取得各input欄位資料的JQuery寫法

取得各input欄位資料的JQuery寫法 text <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>jQuery 取得資料範例</title> <script src="https://code.jquery.com/jquery-3.6.4.min.js"></script> </head> <body> <input type="text" id="textInput" value="Hello, World!"> <button id="getTextBtn">取得文字框的值</button> <script> $(document).ready(function(){ $('#getTextBtn').click(function(){ var textValue = $('#textInput').val(); alert('文字框的值是:' + textValue); }); }); </script> </body> </html> textarea <!-- 在上面的 HTML 檔案中加入以下程式碼 --> <select id="selectOption"> <option value="option1">選項1</option> <option value=&q

Javascript regex

Javascript regex //验证正整数+正小数+0 var checkIsPositive = (rule, value, callback) => { var reg = /^\d+(?=\.{0,1}\d+$|$)/ if(reg.test(value)) { callback() }else{ callback(new Error('请输入大于等于0的正数')) } }; //验证正整数+正小数 var checkIsPositiveEx0 = (rule, value, callback) => { ///^(\d|[1-9]\d+)(\.\d{1,2})?$/ ---->2位小数 var reg = /^(\d|[1-9]\d+)(\.\d+)?$/ if(reg.test(value)) { if(value == '0') { callback(new Error('请输入大于0的正实数')) } else { callback() } }else{ callback(new Error('请输入大于0的正实数')) } }; //验证正整数+0 var checkIsPositiveInteger = (rule, value, callback) => { var reg = /^(0|[1-9][0-9]*)$/ if(reg.test(value)) { callback() }else{ callback(new Error('请输入大于等于0的正整数')) } };  

C#, 利用dynamic宣告變數

利用dynamic宣告變數 using System; class Program { static void Main() { // 宣告 dynamic 物件 dynamic dynamicObject = new { Property1 = "Value1", Property2 = 42, Property3 = true }; // 取得屬性值 string value1 = dynamicObject.Property1; int value2 = dynamicObject.Property2; bool value3 = dynamicObject.Property3; // 顯示取得的值 Console.WriteLine($"Property1: {value1}"); Console.WriteLine($"Property2: {value2}"); Console.WriteLine($"Property3: {value3}"); } } 利用dynamic宣告空的變數, 動態指定屬性資料 using System; class Program { static void Main() { // 宣告 dynamic 變數 dynamic dynamicObject = new System.Dynamic.ExpandoObject(); // 給動態變數不同的屬性名稱和值 dynamicObject.Property1 = "Value1"; dynamicObject.Property2 = 42; dynamicObject.Property3 = true; // 讀取動態變數的屬性 string value1 = dynamicObject.Property1; int

Oracle 好用SQL

查詢Sequence SELECT * FROM all_sequences WHERE sequence_owner = 'SchemaName' AND sequence_name = 'sequence_name'; 查詢TABLE&欄位 SELECT C.OWNER ,C.TABLE_NAME as 表格名稱 , C.COLUMN_ID , C.COLUMN_NAME as 欄位名稱 , DATA_TYPE as 資料型別 , DATA_LENGTH as 長度 , DATA_PRECISION as 整數位數 , DATA_SCALE as 小數位數 , DATA_DEFAULT as 預設值 , NULLABLE as 是否允許空值 , COMMENTS as 欄位描述 FROM ALL_TAB_COLUMNS C JOIN ALL_TABLES T ON C.OWNER = T.OWNER AND C.TABLE_NAME = T.TABLE_NAME LEFT JOIN ALL_COL_COMMENTS R ON C.OWNER = R.Owner AND C.TABLE_NAME = R.TABLE_NAME AND C.COLUMN_NAME = R.COLUMN_NAME WHERE 1=1 and C.OWNER = 'SchemaName' and C.TABLE_NAME=upper('TableName') ORDER BY C.TABLE_NAME, C.COLUMN_ID Table Index SELECT * FROM DBA_IND_COLUMNS where TABLE_OWNER = 'SchemaName' -- 替換成您的模式名稱 and TABLE_NAME=upper('TableName') ORDER BY INDEX_OWNER, INDEX_NAME, COLUMN_POSITION Table PK欄位 SELECT cols.own

MSSQL好用SQL

查詢MSSQL欄位名稱/欄位型別及長度/描述欄位 SELECT a.Table_schema +'.'+a.Table_name as 表格名稱 ,b.COLUMN_NAME as 欄位名稱 ,b.DATA_TYPE as 資料型別 ,isnull(b.CHARACTER_MAXIMUM_LENGTH,'') as 長度 ,isnull(b.NUMERIC_PRECISION ,'') as 整數位數 ,isnull(b.NUMERIC_SCALE ,'') as 小數位數 ,isnull(b.COLUMN_DEFAULT,'') as 預設值 ,case when b.IS_NULLABLE='YES' then 'Y' else 'N' end as 是否允許空值 ,( SELECT value FROM fn_listextendedproperty (NULL, 'schema', a.Table_schema, 'table', a.TABLE_NAME, 'column', default) WHERE name='MS_Description' and objtype='COLUMN' and objname Collate Chinese_Taiwan_Stroke_CI_AS = b.COLUMN_NAME ) as 欄位描述 FROM INFORMATION_SCHEMA.TABLES a LEFT JOIN INFORMATION_SCHEMA.COLUMNS b ON a.TABLE_NAME = b.TABLE_NAME WHERE TABLE_T

C#, LINQ, 2個Table Join 使用1個欄位條件Join

using System; using System.Collections.Generic; using System.Linq; class Program { static void Main() { // 模拟两个表的数据 List<Table1> table1Data = new List<Table1> { new Table1 { Id = 1, CommonField = "A", Value = "Value1" }, new Table1 { Id = 2, CommonField = "B", Value = "Value2" }, new Table1 { Id = 3, CommonField = "C", Value = "Value3" } }; List<Table2> table2Data = new List<Table2> { new Table2 { Id = 101, CommonField = "A", Description = "Desc1" }, new Table2 { Id = 102, CommonField = "B", Description = "Desc2" }, new Table2 { Id = 103, CommonField = "D", Description = "Desc3" } }; // 使用 LINQ 进行连接操作 var query = from t1 in table1Data join t2 in table2Data on t1.Common

C#, LINQ, 2個Table Join 使用2個欄位條件Join

2個Table Join 使用2個欄位條件Join join的欄位名稱要相同 範例1: using System; using System.Collections.Generic; using System.Linq; class Program { static void Main() { // 假设有两个表格 List<Table1> table1Data = new List<Table1> { new Table1 { ID = 1, Name = "John" }, new Table1 { ID = 2, Name = "Alice" }, new Table1 { ID = 3, Name = "Bob" } }; List<Table2> table2Data = new List<Table2> { new Table2 { ID = 1, Age = 25 }, new Table2 { ID = 2, Age = 30 }, new Table2 { ID = 3, Age = 28 } }; // 使用 LINQ 进行两个表格的连接 var query = from t1 in table1Data join t2 in table2Data on new { t1.ID, t1.Name } equals new { t2.ID, Name = "John" } select new { t1.ID, t1.Name, t2.Age }; // 打印结果 foreach (var result in query) { Console.WriteLine($

C# Lambda List Distinct寫法(group by ... select first)

因為List<Class>要進行多欄位Distinct時, 需在Class裡Overide Equals 和 GetHashCode, 可以使用下列語法替代。參考 這篇 。 利用Group後, 取得每個Group第一組資料出來, 達到Distinct效果。 using System; using System.Collections.Generic; using System.Linq; class ClassA { public int Property1 { get; set; } public string Property2 { get; set; } public double Property3 { get; set; } public string Property4 { get; set; } public int Property5 { get; set; } } class Program { static void Main() { // 創建一個 List<ClassA> 的範例資料 List<ClassA> listOfClassA = new List<ClassA> { new ClassA { Property1 = 1, Property2 = "A", Property3 = 1.1, Property4 = "X", Property5 = 100 }, new ClassA { Property1 = 1, Property2 = "A", Property3 = 1.1, Property4 = "Y", Property5 = 101 }, new ClassA { Property1 = 2, Property2 = "B", Property3 = 2.2, Property4 = "X", Property5 = 102 }, new Cla

ATom, 修改字體顏色

  打開 File > Stylesheet 修改註解 atom-text-editor .syntax--comment { //font-style: normal; //註解非斜體 font-size: 16px; color: lightblue; } 修改文字 atom-text-editor { // color: white; // background-color: hsl(180, 24%, 12%); }

C#, ASP.NET MVC, DBEntities動態決定連線Connection Name

在 C# 中使用 Entity Framework 時,可以建立一個繼承自 DbContext 的類別,例如 ABCEntities ,並在建構子中指定連接字串的名稱。然後,根據需要在執行時更改連接字串的名稱。 using System.Data.Entity; public class ABCEntities : DbContext { // 在這裡可以添加 DbSet 屬性和其他配置項 public ABCEntities(string connectionName) : base(connectionName) { } } 然後,在使用 ABCEntities 的地方,可以根據需要設定連接字串的名稱。例如: class Program { static void Main() { // 指定連接字串的名稱 string connectionName = "YourConnectionStringName"; // 使用指定的連接字串名稱建立 ABCEntities 實例 using (var dbContext = new ABCEntities(connectionName)) { // 在這裡可以執行資料庫操作 } } } 在上述範例中,可以根據需要更改 connectionName 的值,以選擇要使用的連接字串。這種方式可以在執行時動態指定連接字串的名稱,以便根據不同的邏輯選擇不同的資料庫連線。  

MSSQL, 取得TABLE名稱

下面SQL會因為p.value不知道型態, 而發生錯誤。 SELECT t.name AS TableName, p.value AS TableDesc FROM sys.tables t LEFT JOIN sys.extended_properties p ON p.major_id = t.object_id AND p.minor_id = 0 AND p.class = 1 where (p.value is not null and p.value <> '') and upper(p.value) like '%AAA%' 因為 upper() 的傳入參數必須為字串, 所以可以把欄位型態強制轉為varchar, 解決此問題 (前題是確定p.value一定為字串) SELECT t.name AS TableName, p.value AS TableDesc FROM sys.tables t LEFT JOIN sys.extended_properties p ON p.major_id = t.object_id AND p.minor_id = 0 AND p.class = 1 where (p.value is not null and p.value <> '') AND UPPER(CAST(p.value AS NVARCHAR(MAX))) LIKE '%' + UPPER('AAA') + '%' 就可以解決問題了。  

Lambda查詢符合List內容條件的資料

LINQ查詢符合List內容條件的資料 void Main() { List<string> listA = getA(); List<string> listB = GetB(); var query = listA.Where(x => listB.Contains(x)).ToList(); query.Dump(); } public List<string> getA() { List<string> list = new List<string>(); list.Add("A"); list.Add("B"); list.Add("C"); list.Add("D"); list.Add("E"); return list; } public List<string> GetB() { List<string> list = new List<string>(); list.Add("A"); list.Add("E"); return list; }  

HTML colgroup 用法說明

< colgroup> 是 HTML 中的一個元素,用於定義表格列(columns)的屬性,通常用來設定一組列的共同樣式或行為,以簡化表格的樣式和結構設定。它通常與 元素一起使用,用來指定列的寬度、背景色、文字對齊等屬性。 以下是 < colgroup> 的一般用法說明: 定義 < colgroup> 元素:在表格 (< table>) 元素內部,你可以使用 < colgroup> 元素來定義列的屬性。通常,它會位於表格的開頭,但在表格內部的任何位置都可以。 <table> <colgroup> <col style="width: 100px;"> <col style="background-color: lightblue;"> </colgroup> <!-- 表格內容 --> </table> 使用 < col> 元素:在 < colgroup> 元素內部,你可以使用一個或多個 < col> 元素來指定不同列的屬性。這些屬性可以包括列的寬度、背景色、文字對齊等。 <colgroup> <col style="width: 100px;"> <col style="background-color: lightblue;"> </colgroup> 繼承屬性:當你在 < colgroup> 中指定列的屬性時,這些屬性將應用於整個列,除非在特定的 < col> 元素中進一步覆蓋。 節省重複代碼:使用 < colgroup> 可以幫助節省重複的 HTML 代碼,尤其是當你希望多列具有相同的樣式或屬性時,這在大型表格中特別有用。 這是一個簡單的示例,展示了 < colgroup> 和 < col> 的使用: <table> <colgroup> <col style="

Lambda Select first應用

 這個程式代碼是使用C#語言的LINQ (Language Integrated Query) 庫來操作一個列表 (List)。它包含了一個複雜的查詢 list.GroupBy(x => x.AA).Select(x => x.First()).Select(x => x.AA).ToList() 讓我們一步一步來詳細說明這些操作:  Comment list 是一個包含元素的 List,其中每個元素都具有一個名為 AA 的屬性。 GroupBy(x => x.AA):這是一個LINQ操作,它將 list 中的元素按照它們的 AA 屬性的值進行分組。這意味著相同的 AA 值的元素將被放入相同的分組中,所以你將會得到一個以 AA 屬性的值作為鍵的分組。 .Select(x => x.First()):這個操作針對每個分組中的元素,選擇該分組的第一個元素。換句話說,對於每個 AA 值,只會保留第一個具有該值的元素。這會縮小結果的集合,使其只包含每個 AA 值的一個元素。 .Select(x => x.AA):這是接著前一步操作的另一個 Select 操作,它選擇保留元素的 AA 屬性的值。 .ToList():最後一個操作將LINQ查詢的結果轉換為一個新的List,以便進一步使用或返回。 總結,這個LINQ查詢的目的是對 list 中的元素進行分組,然後只保留每個分組中的第一個元素,最終將這些第一個元素的 AA 屬性值轉為List返回。這可以用來去除具有相同 AA 值的重複元素,並僅保留每個 AA 值的第一個元素。