LINQ To SQL IN與排序

本文介绍了一种使用 C# 和 VB.NET 实现的自定义排序方法,该方法可以根据传入元素的顺序进行排序。通过 LINQ 查询指定城市列表,并使用自定义排序函数 CustomSort 对查询结果进行排序。

承上篇,讀者繼續詢問排序問題,如要依IN時傳入元素的順序排列,該如何做?

 

C#

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data.Linq;

namespace ConsoleApplication36
{
    class Program
    {
        static void Main(string[] args)
        {
            DataClasses1DataContext context = new DataClasses1DataContext();
            context.Log = Console.Out;
            var result = from s1 in context.Customers where (new string[] { "UK", "Lisboa" }).Contains(s1.City) select s1;
            var result2 = CustomSort(result.ToList(), new string[] { "UK", "Lisboa" });
            foreach (var item in result2)
            {
                Console.WriteLine(item.City);
            }
            Console.ReadLine();
        }

        static List<Customers> CustomSort(List<Customers> list,string[] citys)
        {
            List<Customers> result = new List<Customers>();
            foreach (var item in citys)
            {
                var query = from s1 in list where s1.City == item select s1;
                foreach (var ditem in query)
                    result.Add(ditem);
            }
            return result;
        }
    }
}

 

VB.NET

 

Module Module1

    Sub Main()

        Dim context As New DataClasses1DataContext()

        Dim lists = From s1 In context.Customers Where (New String() {"UK", "Lisboa"}).Contains(s1.City) Select s1
        For Each item In CustomSort(lists.ToList(), New String() {"UK", "Lisboa"})
            Console.WriteLine(item.City)
        Next
        Console.ReadLine()
    End Sub

    Function CustomSort(ByVal source As List(Of Customers), ByVal citys As String())
        Dim result As New List(Of Customers)
        For Each item In citys
            Dim localItem = item
            Dim query = From s1 In source Where s1.City = localItem Select s1
            For Each ditem In query
                result.Add(ditem)
            Next
        Next
        Return result
    End Function

End Module

 

請注意,ToList後即進入離線模式,接下來的CustomSort不會送出任何SQL指令.

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值