मैंने चेकबॉक्स के साथ एक डब्ल्यूपीएफ फॉर्म बनाया है। यदि चेकबॉक्स चेक किया गया है तो मैं डेटा की तुलना दो कॉलम से करना चाहता हूं और यदि इसे केवल एक से चेक नहीं किया गया है।

कोड के नीचे ठीक काम कर रहा है लेकिन मुझे यकीन नहीं है कि मैं इसे सबसे अच्छा तरीका कर रहा हूं?

प्रश्न: क्या नीचे दिया गया कोड if स्टेटमेंट के लिए जाने का सही तरीका है? क्या कोई बेहतर उपाय हैं?

अगर कथन के लिए कोड यहां दिया गया है:

        IEnumerable<JoinedFIandSE> firstPart;
        IEnumerable<JoinedFIandSE> secondPart;

        if (MainWindow.CompareByTwoColumnsYes == true)
        {
            firstPart = from table1 in t2.AsEnumerable()
                        join table2 in t1.AsEnumerable()
                            on new { A = (string)table1["SNAME"], B = (string)table1["NAMEB"] } equals
                            new { A = (string)table2["SNAME"], B = (string)table2["NAMEB"] } into temp
                        from table2 in temp.DefaultIfEmpty()
                        select new JoinedFIandSE
                        {
                            NRO = (string)table1["NRO"],
                            NRO1 = table2 != null ? (string)table2["NRO"] : string.Empty,
                            SNAME = (string)table1["SNAME"],
                            NAMEA = (string)table1["NAMEA"],
                            NAMEB = (string)table1["NAMEB"],
                        };
        }
        else
        {
            firstPart = from table1 in t2.AsEnumerable()
                        join table2 in t1.AsEnumerable()
                            on (string)table1["SNAME"] equals (string)table2["SNAME"] into temp
                        from table2 in temp.DefaultIfEmpty()
                        select new JoinedFIandSE
                        {
                            NRO = (string)table1["NRO"],
                            NRO1 = table2 != null ? (string)table2["NRO"] : string.Empty,
                            SNAME = (string)table1["SNAME"],
                            NAMEA = (string)table1["NAMEA"],
                            NAMEB = (string)table1["NAMEB"],
                        };
        }

मैं दूसरी टेबल के लिए भी ऐसा ही कर रहा हूं और फिर

        var results = firstPart.Concat(secondPart);
        return results;

यह कोड public static IEnumerable<JoinedFIandSE> GetMyJoinedResult() मेथड के अंदर है।

0
hatman 14 जून 2020, 18:54

1 उत्तर

सबसे बढ़िया उत्तर

आप इसे आजमा सकते हैं, यह आपकी स्थिति को जॉइन क्लॉज में ले जाएगा।

IEnumerable<JoinedFIandSE> firstPart;
IEnumerable<JoinedFIandSE> secondPart;


firstPart = from table1 in t2.AsEnumerable()
            join table2 in t1.AsEnumerable()
            on new { A = (string)table1["SNAME"], B =  
                           MainWindow.CompareByTwoColumnsYes ? (string)table1["NAMEB"]: "" } equals
            new { A = (string)table2["SNAME"], B = MainWindow.CompareByTwoColumnsYes ? (string)table2["NAMEB"]: "" } into temp
        from table2 in temp.DefaultIfEmpty()
        select new JoinedFIandSE
        {
            NRO = (string)table1["NRO"],
            NRO1 = table2 != null ? (string)table2["NRO"] : string.Empty,
            SNAME = (string)table1["SNAME"],
            NAMEA = (string)table1["NAMEA"],
            NAMEB = (string)table1["NAMEB"],
        };

इसके लिए और बेहतर उपाय हो सकता है।

2
HPSingh 14 जून 2020, 16:26