Register Register Member Login Member Login Member Login Forgot Password ??
PHP , ASP , ASP.NET, VB.NET, C#, Java , jQuery , Android , iOS , Windows Phone
 

Registered : 109,037

HOME > .NET Framework > Forum > C# Win App Linq ถ้าในกรณีนี้ผมไม่ต้องการเรียกฟังค์ชัน 2 รอบ ควรแก้โค้ดเป็นยังไง ครับ



 

C# Win App Linq ถ้าในกรณีนี้ผมไม่ต้องการเรียกฟังค์ชัน 2 รอบ ควรแก้โค้ดเป็นยังไง ครับ

 



Topic : 136096



โพสกระทู้ ( 4,440 )
บทความ ( 23 )



สถานะออฟไลน์
Facebook



55

66

เหมือนเมื่อก่อนเคยใช้อะไรซักอย่าง แต่ก็ลืมไปแล้วครับ



Tag : .NET, Win (Windows App), C#







Move To Hilight (Stock) 
Send To Friend.Bookmark.
Date : 2021-05-03 16:24:54 By : lamaka.tor View : 714 Reply : 18
 

 
ถ้านึกไม่ออก ใช้ counter นับรอบเอา






แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2021-05-03 21:55:20 By : พญามัจจุราช
 


 

No. 2



โพสกระทู้ ( 9,586 )
บทความ ( 2 )



สถานะออฟไลน์


หลักการ ขี้เกียจเขียน ยาว ก็ นำเข้าตัวแปรไว้ก่อน
แต่ไม่รู้ว่าจะทำได้ไหม ไม่เคยใช้
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2021-05-04 07:22:37 By : Chaidhanan
 

 

No. 3



โพสกระทู้ ( 4,440 )
บทความ ( 23 )



สถานะออฟไลน์
Facebook

ตอบความคิดเห็นที่ : 2 เขียนโดย : Chaidhanan เมื่อวันที่ 2021-05-04 07:22:37
รายละเอียดของการตอบ ::
ไม่รู้จะสร้างยังไงนี่แหละครับ
ผมคิดเอาเอง ว่ามันสร้างไม่ได้ ใน from select ครับ

แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2021-05-04 10:47:22 By : lamaka.tor
 


 

No. 4



โพสกระทู้ ( 4,440 )
บทความ ( 23 )



สถานะออฟไลน์
Facebook

ตอบความคิดเห็นที่ : 1 เขียนโดย : พญามัจจุราช เมื่อวันที่ 2021-05-03 21:55:20
รายละเอียดของการตอบ ::
มีตัวอย่างไม๊ ครับ

แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2021-05-04 10:57:02 By : lamaka.tor
 


 
Code (C#)
int numberOfrecords=10;
listOfItems.OrderByDescending(x => x.CreatedDate).Take(numberOfrecords)


https://docs.microsoft.com/en-us/dotnet/api/system.linq.enumerable.take?view=net-5.0
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2021-05-04 10:58:44 By : พญามัจจุราช
 


 

No. 6



โพสกระทู้ ( 4,440 )
บทความ ( 23 )



สถานะออฟไลน์
Facebook

ตอบความคิดเห็นที่ : 5 เขียนโดย : พญามัจจุราช เมื่อวันที่ 2021-05-04 10:58:44
รายละเอียดของการตอบ ::
โค้ดที่ผมใช้คือ เอาค่าไปรันใน ฟังค์ชั่นครับ
ซึ่งจากโค้ด มันต้องรันในฟังค์ชัน 2 รอบ ทำให้ซ้ำซ้อนครับ


แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2021-05-04 11:06:26 By : lamaka.tor
 


 
2 รอบเพราะมันยังเข้าเงื่อนไข ต้องกำหนดเงื่อนไขใหม่ถ้าถูกต้องมันจะทำงานรอบเดียว เว้นแต่มีข้อมูลอื่นที่ไม่ได้นำมาแสดง ที่เป็นที่มาของการวนซ้ำ (เงื่อนไขที่ว่าคือ where expression) ...ถ้าไม่อยากปลี่ยนเงื่อนไข ใช้ .take(1) ไม่ได้หรือ ??? มันจะเข้าล้วงข้อมูลรอบเดียวใน list
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2021-05-04 11:22:29 By : พญามัจจุราช
 


 

No. 8



โพสกระทู้ ( 9,586 )
บทความ ( 2 )



สถานะออฟไลน์


ลองดู ไม่แน่ใจเหมือนกัน

where ((int tmpvar = Getxxxx())>11 || tmpvar<2)
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2021-05-04 11:37:20 By : Chaidhanan
 


 

No. 9



โพสกระทู้ ( 4,440 )
บทความ ( 23 )



สถานะออฟไลน์
Facebook

ตอบความคิดเห็นที่ : 7 เขียนโดย : พญามัจจุราช เมื่อวันที่ 2021-05-04 11:22:29
รายละเอียดของการตอบ ::
ไม่ใช่ 2 รอบ แบบว่าทำงาน 2 รอบนะครับ

คือ มันต้องเช็ค 2 รอบ คือ เพราะเงื่อนไข คือ ค่า Duration มากกว่า 11 หรือว่า น้อยกว่า 2
ซึ่ง พอมาเขียนเป็นโค้ด มันก็จะ ต้องไปที่ ฟังค์ชัน GetDuration(file).TotalMinutes เพื่อดึงมาเช็คว่ามากกว่า 11 ไม๊
และ ก็ไปที่ GetDuration(file).TotalMinutes อีกรอบ เพื่อ นำค่ามาเช็ค ว่าน้อยกว่า 2 ไม๊

ซึ่งจริงๆมันก็ได้ออกมาค่าเดิมครับ

หรือพูดง่ายๆ คือ สมมุติ ว่า GetDuration(file).TotalMinutes = 5
แทนที่จะไปที่ GetDuration(file).TotalMinutes เพื่อเอา 5 มาเช็คเป็น

5>11 || 5< 2

แต่ผมก็ทำได้แค่

GetDuration(file).TotalMinutes > 11 || GetDuration(file).TotalMinutes < 2

กลายเป็นว่าทำงาน 2 รอบ ทำให้เสียเวลา ครับ

แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2021-05-04 14:25:25 By : lamaka.tor
 


 
Code (C#)
int total_min = GetDuration(file).TotalMinutes; // รอบเดียว

// linq

...total_min>11 || total_min< 2

แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2021-05-04 15:04:19 By : พญามัจจุราช
 


 

No. 11



โพสกระทู้ ( 4,440 )
บทความ ( 23 )



สถานะออฟไลน์
Facebook

ตอบความคิดเห็นที่ : 10 เขียนโดย : พญามัจจุราช เมื่อวันที่ 2021-05-04 15:04:19
รายละเอียดของการตอบ ::

file มันอยู่ใน from นะครับ
ไม่ได้อยู่นอก from ไม่แน่ใจว่าเราสามารถทำได้หรือปล่าวครับ


แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2021-05-04 16:06:44 By : lamaka.tor
 


 

No. 12



โพสกระทู้ ( 4,440 )
บทความ ( 23 )



สถานะออฟไลน์
Facebook

โค้ดครับ

Code (C#)
(from file in Directory.GetFiles(@"D:\songTOR", "*.mp4")
             where GetDuration(file).TotalMinutes > 11 ||  GetDuration(file).TotalMinutes< 2
             select file).ToList<string>()
                .ForEach(f => {
                      try
                        {
                        File.Delete(f);

                        } catch { } });
                     
                  MessageBox.Show("complete");


ตอนนี้ถึงแม้จะแก้ปัญหาได้แล้ว โดยการสร้างมาอีก ฟังค์ชันเพื่อ รีเิทร์น ค่า bool เพื่อเช็ค

Code (C#)
 (from file in Directory.GetFiles(@"D:\songTOR", "*.mp4")
             where CheckDuration(file) //||File.Exists(file.Replace(".mp4", ".mp3")) // 
             select file).ToList<string>()
                .ForEach(f => {
                      try
                        {
                        File.Delete(f);

                        } catch { } });
                     
                  MessageBox.Show("complete");


Code (C#)
 bool CheckDuration(string filePath)
        {
            double _TotalMinutes = GetDuration(filePath).TotalMinutes;
            return (_TotalMinutes > 11 || _TotalMinutes < 2);


        }

        //https://markheath.net/post/how-to-get-media-file-duration-in-c
        TimeSpan GetDuration(string filePath)
        {
            try
            {
                using (var shell = ShellObject.FromParsingName(filePath))
                {
                    IShellProperty prop = shell.Properties.System.Media.Duration;
                    var t = (ulong)prop.ValueAsObject;
                    return TimeSpan.FromTicks((long)t);
                }
            }
            catch { return TimeSpan.FromTicks((long)0) ; }

        }


เพียงแค่ผมยังสงสัย อยู่ว่า เราสามารถประกาศตัวแปร ใน from select ได้ไม๊ เพื่อจะดึงค่ามาใช้ ครับ
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2021-05-04 16:20:21 By : lamaka.tor
 


 

No. 13



โพสกระทู้ ( 9,586 )
บทความ ( 2 )



สถานะออฟไลน์


ได้ ลอง คห 8 หรือยัง

คือถ้ามันเรียก function นอก form ได้ มันก็ควร ประกาศตัวแปรได้
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2021-05-04 16:33:41 By : Chaidhanan
 


 

No. 14



โพสกระทู้ ( 4,440 )
บทความ ( 23 )



สถานะออฟไลน์
Facebook

ตอบความคิดเห็นที่ : 13 เขียนโดย : Chaidhanan เมื่อวันที่ 2021-05-04 16:33:41
รายละเอียดของการตอบ ::
ลองแล้วครับ ไม่ได้ครับ

แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2021-05-04 16:41:17 By : lamaka.tor
 


 
อีกตัวอย่าง

Code (C#)
var list = (from x in docs
            let temp = _storageService.GetFileUrl(x.FileName) // ประกาศตัวแปรใน from...in...
            select new NoneRequiredUserDocument
            {
                StudentDocument = x,
                Src = temp,
                ThumbnailImageUrl = ImageHelper.ThumbnailImageUrl(temp, 75)
            }).ToList();

แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2021-05-04 16:45:17 By : พญามัจจุราช
 


 

No. 16



โพสกระทู้ ( 4,440 )
บทความ ( 23 )



สถานะออฟไลน์
Facebook

666
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2021-05-04 17:02:07 By : lamaka.tor
 


 
No errors
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2021-05-04 18:05:02 By : พญามัจจุราช
 


 

No. 18



โพสกระทู้ ( 4,440 )
บทความ ( 23 )



สถานะออฟไลน์
Facebook

ตอบความคิดเห็นที่ : 17 เขียนโดย : พญามัจจุราช เมื่อวันที่ 2021-05-04 18:05:02
รายละเอียดของการตอบ ::
ได้แล้วครับ ขอบคุณมากครับ
Code (C#)
var list = (from x in Directory.GetFiles(@"D:\songTOR", "*.mp4")
                        let du = GetDuration(x).TotalMinutes // ประกาศตัวแปรใน from...in...
                        where du > 11 || du <2
                        select x).ToList();


แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2021-05-05 08:57:14 By : lamaka.tor
 

   

ค้นหาข้อมูล


   
 

แสดงความคิดเห็น
Re : C# Win App Linq ถ้าในกรณีนี้ผมไม่ต้องการเรียกฟังค์ชัน 2 รอบ ควรแก้โค้ดเป็นยังไง ครับ
 
 
รายละเอียด
 
ตัวหนา ตัวเอียง ตัวขีดเส้นใต้ ตัวมีขีดกลาง| ตัวเรืองแสง ตัวมีเงา ตัวอักษรวิ่ง| จัดย่อหน้าอิสระ จัดย่อหน้าชิดซ้าย จัดย่อหน้ากึ่งกลาง จัดย่อหน้าชิดขวา| เส้นขวาง| ขนาดตัวอักษร แบบตัวอักษร
ใส่แฟลช ใส่รูป ใส่ไฮเปอร์ลิ้งค์ ใส่อีเมล์ ใส่ลิ้งค์ FTP| ใส่แถวของตาราง ใส่คอลัมน์ตาราง| ตัวยก ตัวห้อย ตัวพิมพ์ดีด| ใส่โค้ด ใส่การอ้างถึงคำพูด| ใส่ลีสต์
smiley for :lol: smiley for :ken: smiley for :D smiley for :) smiley for ;) smiley for :eek: smiley for :geek: smiley for :roll: smiley for :erm: smiley for :cool: smiley for :blank: smiley for :idea: smiley for :ehh: smiley for :aargh: smiley for :evil:
Insert PHP Code
Insert ASP Code
Insert VB.NET Code Insert C#.NET Code Insert JavaScript Code Insert C#.NET Code
Insert Java Code
Insert Android Code
Insert Objective-C Code
Insert XML Code
Insert SQL Code
Insert Code
เพื่อความเรียบร้อยของข้อความ ควรจัดรูปแบบให้พอดีกับขนาดของหน้าจอ เพื่อง่ายต่อการอ่านและสบายตา และตรวจสอบภาษาไทยให้ถูกต้อง

อัพโหลดแทรกรูปภาพ

Notice

เพื่อความปลอดภัยของเว็บบอร์ด ไม่อนุญาติให้แทรก แท็ก [img]....[/img] โดยการอัพโหลดไฟล์รูปจากที่อื่น เช่นเว็บไซต์ ฟรีอัพโหลดต่าง ๆ
อัพโหลดแทรกรูปภาพ ให้ใช้บริการอัพโหลดไฟล์ของไทยครีเอท และตัดรูปภาพให้พอดีกับสกรีน เพื่อความโหลดเร็วและไฟล์ไม่ถูกลบทิ้ง

   
  เพื่อความปลอดภัยและการตรวจสอบ กระทู้ที่แทรกไฟล์อัพโหลดไฟล์จากที่อื่น อาจจะถูกลบทิ้ง
 
โดย
อีเมล์
บวกค่าให้ถูก
<= ตัวเลขฮินดูอารบิก เช่น 123 (หรือล็อกอินเข้าระบบสมาชิกเพื่อไม่ต้องกรอก)







Exchange: นำเข้าสินค้าจากจีน, Taobao, เฟอร์นิเจอร์, ของพรีเมี่ยม, ร่ม, ปากกา, power bank, แฟลชไดร์ฟ, กระบอกน้ำ

Load balance : Server 02
ThaiCreate.Com Logo
© www.ThaiCreate.Com. 2003-2024 All Rights Reserved.
ไทยครีเอทบริการ จัดทำดูแลแก้ไข Web Application ทุกรูปแบบ (PHP, .Net Application, VB.Net, C#)
[Conditions Privacy Statement] ติดต่อโฆษณา 081-987-6107 อัตราราคา คลิกที่นี่