Skip to main content

Scalar Function - Select

This sample demonstrates using a scalar user-defined function in a projection.

Public Sub LinqToSqlUserDefined01()
    Dim q = From c In db.Categories _
            Select New With {c.CategoryID, .TotalUnitPrice = db.TotalProductUnitPriceByCategory(c.CategoryID)}

    ObjectDumper.Write(q)
End Sub

Result:
CategoryID=1    TotalUnitPrice=465.7500
CategoryID=2    TotalUnitPrice=286.7500
CategoryID=3    TotalUnitPrice=340.0800
CategoryID=4    TotalUnitPrice=297.3000
CategoryID=5    TotalUnitPrice=148.7500
CategoryID=6    TotalUnitPrice=330.0400
CategoryID=10   TotalUnitPrice=null
CategoryID=11   TotalUnitPrice=null
CategoryID=12   TotalUnitPrice=null
CategoryID=13   TotalUnitPrice=null
CategoryID=14   TotalUnitPrice=null
CategoryID=15   TotalUnitPrice=null
CategoryID=16   TotalUnitPrice=null
CategoryID=17   TotalUnitPrice=null
CategoryID=18   TotalUnitPrice=null
CategoryID=19   TotalUnitPrice=null
CategoryID=7    TotalUnitPrice=166.8500
CategoryID=8    TotalUnitPrice=260.1900


Scalar Function - Where

This sample demonstrates using a scalar user-defined function in a where clause.

Public Sub LinqToSqlUserDefined02()

    Dim q = From p In db.Products _
            Where p.UnitPrice = db.MinUnitPriceByCategory(p.CategoryID) _
            Select p

    ObjectDumper.Write(q)
End Sub

Result:
ProductID=3     ProductName=Aniseed Syrup       SupplierID=1    CategoryID=2    QuantityPerUnit=12 - 550 ml bottles     UnitPrice=10.0000       UnitsInStock=13         UnitsOnOrder=70         ReorderLevel=25         Discontinued=False      Order_Details=...       Category={ }    Supplier={ }
ProductID=13    ProductName=Konbu       SupplierID=6    CategoryID=8    QuantityPerUnit=2 kg box        UnitPrice=7.0000        UnitsInStock=24         UnitsOnOrder=0  ReorderLevel=5  Discontinued=False      Order_Details=...       Category={ }    Supplier={ }
ProductID=19    ProductName=Teatime Chocolate Biscuits  SupplierID=8    CategoryID=3    QuantityPerUnit=10 boxes x 12 pieces    UnitPrice=10.2000       UnitsInStock=25         UnitsOnOrder=0  ReorderLevel=5  Discontinued=False      Order_Details=...       Category={ }    Supplier={ }
ProductID=24    ProductName=Guaraná Fantástica  SupplierID=10   CategoryID=1    QuantityPerUnit=12 - 355 ml cans        UnitPrice=5.5000        UnitsInStock=20         UnitsOnOrder=0  ReorderLevel=0  Discontinued=True       Order_Details=...       Category={ }    Supplier={ }
ProductID=33    ProductName=Geitost     SupplierID=15   CategoryID=4    QuantityPerUnit=500 g   UnitPrice=3.5000        UnitsInStock=112        UnitsOnOrder=0  ReorderLevel=20         Discontinued=False      Order_Details=...       Category={ }    Supplier={ }
ProductID=52    ProductName=Filo Mix    SupplierID=24   CategoryID=5    QuantityPerUnit=16 - 2 kg boxes         UnitPrice=8.0000        UnitsInStock=38         UnitsOnOrder=0  ReorderLevel=25         Discontinued=False      Order_Details=...       Category={ }    Supplier={ }
ProductID=54    ProductName=Tourtière   SupplierID=25   CategoryID=6    QuantityPerUnit=16 pies         UnitPrice=8.4500        UnitsInStock=21         UnitsOnOrder=0  ReorderLevel=10         Discontinued=False      Order_Details=...       Category={ }    Supplier={ }
ProductID=74    ProductName=Longlife Tofu       SupplierID=4    CategoryID=7    QuantityPerUnit=5 kg pkg.       UnitPrice=11.0000       UnitsInStock=4  UnitsOnOrder=20         ReorderLevel=5  Discontinued=False      Order_Details=...       Category={ }    Supplier={ }


Table-Valued Function

This sample demonstrates selecting from a table-valued user-defined function.

Public Sub LinqToSqlUserDefined03()

    Dim q = From p In db.ProductsUnderThisUnitPrice(10.25#) _
                Where Not p.Discontinued _
                Select p

    ObjectDumper.Write(q)
End Sub

Result:
ProductID=3     ProductName=Aniseed Syrup       SupplierID=1    CategoryID=2    QuantityPerUnit=12 - 550 ml bottles     UnitPrice=10.0000       UnitsInStock=13         UnitsOnOrder=70         ReorderLevel=25         Discontinued=False
ProductID=13    ProductName=Konbu       SupplierID=6    CategoryID=8    QuantityPerUnit=2 kg box        UnitPrice=7.0000        UnitsInStock=24         UnitsOnOrder=0  ReorderLevel=5  Discontinued=False
ProductID=19    ProductName=Teatime Chocolate Biscuits  SupplierID=8    CategoryID=3    QuantityPerUnit=10 boxes x 12 pieces    UnitPrice=10.2000       UnitsInStock=25         UnitsOnOrder=0  ReorderLevel=5  Discontinued=False
ProductID=23    ProductName=Tunnbröd    SupplierID=9    CategoryID=5    QuantityPerUnit=12 - 250 g pkgs.        UnitPrice=10.0000       UnitsInStock=61         UnitsOnOrder=0  ReorderLevel=25         Discontinued=False
ProductID=33    ProductName=Geitost     SupplierID=15   CategoryID=4    QuantityPerUnit=500 g   UnitPrice=3.5000        UnitsInStock=112        UnitsOnOrder=0  ReorderLevel=20         Discontinued=False
ProductID=52    ProductName=Filo Mix    SupplierID=24   CategoryID=5    QuantityPerUnit=16 - 2 kg boxes         UnitPrice=8.0000        UnitsInStock=38         UnitsOnOrder=0  ReorderLevel=25         Discontinued=False
ProductID=54    ProductName=Tourtière   SupplierID=25   CategoryID=6    QuantityPerUnit=16 pies         UnitPrice=8.4500        UnitsInStock=21         UnitsOnOrder=0  ReorderLevel=10         Discontinued=False
ProductID=75    ProductName=Rhönbräu Klosterbier        SupplierID=12   CategoryID=1    QuantityPerUnit=24 - 0.5 l bottles      UnitPrice=8.7500        UnitsInStock=125        UnitsOnOrder=0  ReorderLevel=25         Discontinued=False


Table-Valued Function - Join

This sample demonstrates joining to the results of a table-valued user-defined function.

Public Sub LinqToSqlUserDefined04()

    Dim q = From c In db.Categories _
            Group Join p In db.ProductsUnderThisUnitPrice(8.5#) On c.CategoryID Equals p.CategoryID Into prods = Group _
            From p In prods _
            Select New With {c.CategoryID, c.CategoryName, p.ProductName, p.UnitPrice}

    ObjectDumper.Write(q)
End Sub

Result:
CategoryID=8    CategoryName=Seafood    ProductName=Konbu       UnitPrice=7.0000
CategoryID=1    CategoryName=Beverages  ProductName=Guaraná Fantástica  UnitPrice=5.5000
CategoryID=4    CategoryName=Dairy Products     ProductName=Geitost     UnitPrice=3.5000
CategoryID=5    CategoryName=Grains/Cereals     ProductName=Filo Mix    UnitPrice=8.0000
CategoryID=6    CategoryName=Meat/Poultry       ProductName=Tourtière   UnitPrice=8.4500