J'ai une entité appelée Client et elle a trois propriétés:
public class Customer {
public virtual Guid CompanyId;
public virtual long Id;
public virtual string Name;
}
J'ai également une entité appelée Splitting et elle a trois propriétés:
public class Splitting {
public virtual long CustomerId;
public virtual long Id;
public virtual string Name;
}
Maintenant, je dois écrire une méthode qui obtient companyId et customerId. La méthode doit renvoyer la liste de fractionnement qui se rapporte à l'ID client spécifique dans l'ID entreprise. Quelque chose comme ça:
public IList<Splitting> get(Guid companyId, long customrId) {
var res=from s in Splitting
from c in Customer
...... how to continue?
return res.ToList();
}
var res = from s in Splitting
join c in Customer on s.CustomerId equals c.Id
where c.Id == customrId
&& c.CompanyId == companyId
select s;
En utilisant Extension methods
:
var res = Splitting.Join(Customer,
s => s.CustomerId,
c => c.Id,
(s, c) => new { s, c })
.Where(sc => sc.c.Id == userId && sc.c.CompanyId == companId)
.Select(sc => sc.s);
Vous pouvez trouver tout un tas d'exemples Linq dans Visual Studio. Sélectionnez simplement Help -> Samples
, puis décompressez les échantillons Linq.
Ouvrez la solution d'exemples linq et ouvrez le projet LinqSamples.cs du projet SampleQueries.
La réponse que vous cherchez se trouve dans la méthode Linq14:
int[] numbersA = { 0, 2, 4, 5, 6, 8, 9 };
int[] numbersB = { 1, 3, 5, 7, 8 };
var pairs =
from a in numbersA
from b in numbersB
where a < b
select new {a, b};
Pas sûr à 100% de la relation entre ces deux entités, mais voici:
IList<Splitting> res = (from s in [data source]
where s.Customer.CompanyID == [companyID] &&
s.CustomerID == [customerID]
select s).ToList();
IList<Splitting> res = [data source].Splittings.Where(
x => x.Customer.CompanyID == [companyID] &&
x.CustomerID == [customerID]).ToList();
public IList<Splitting> get(Guid companyId, long customrId) {
var res=from c in Customers_data_source
where c.CustomerId = customrId && c.CompanyID == companyId
from s in Splittings_data_srouce
where s.CustomerID = c.CustomerID
select s;
return res.ToList();
}